j35t3r
j35t3r

Reputation: 1533

How to plot a discrete signal in matlab?

I want to plot a function y[n] = x[n+2]. My problem is that it does not plot in right range or even does not draw the zero sample points.

enter image description here

enter image description here

n = 1:6;
x = 1:1:8;

f = figure;
subplot(1,2,1)      
stem(n, x(n));
axis([-3,8, 0, 7]);
xlabel('n');
ylabel('x[n]');
title('Subplot 1')

subplot(1,2,2)       
stem(n, x(n + 2));     
xlabel('n');
ylabel('y[n]');
title('Subplot 2')

How to change the variables n or x to get the right plot? In the end, it ought to look like this:

enter image description here

Upvotes: 1

Views: 8884

Answers (1)

Suever
Suever

Reputation: 65470

You are confusing the concept of indices with your dependent variable. You should construct a function x which transforms an input n using the relationship that you know

function y = x(n)
    % Set all outputs to 0
    y = zeros(size(n));

    % Replace the values that fall between 0 and 6 with their same value
    y(n >= 0 & n <= 6) = n(n >= 0 & n <= 6);
end

Then you should pass this function a range of n values to evaluate.

nvalues = -3:8;
yvalues = x(nvalues);

stem(nvalues, yvalues)

You can also apply a transformation to the n values

nvalues = -3:8;
yvalues = x(nvalues + 2);

stem(nvalues, yvalues)

Upvotes: 1

Related Questions