1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Difference equation

  1. Sep 3, 2006 #1
    plz help me to implement this difference equation in MATLAB????

    y[n]=x[n]-x[n-1];

    matlab is not supportin -ve index....
     
  2. jcsd
  3. Sep 3, 2006 #2
    Matlab doesn't like negative indexes as you seem to have noticed. But there are at least three easy ways to get around this.
    Code (Text):
    clear

    n = [0:100]; N = length(n);
    x = cos(n/25);

    % option 1
    y1(1) = x(1) - cos(-1/25); %compute y(1) first
    for i = 2:N
        y1(i) = x(i)-x(i-1);
    end
    figure;plot(n,y1,n,x)

    % option 2
    x0 = cos(-1/25); %define x(-1) outside loop
    for i = 1:N
        y2(i) = x(i) - x0;
        x0 = x(i);
    end
    figure;plot(n,y2,n,x)

    % option 3
    n2 = [-1:99]; % use vectors instead of loop
    xn = cos(n/25);
    xn_minus_one = cos(n2/25);
    y3 = xn-xn_minus_one;
    figure;plot(n,y3,n,xn)
    If you want to use a loop, you can loop over i=2:N and define y(1) outside of the loop.

    Another option is to loop from i=1:N and define x(n-1) as x0 and update it at each step, that way you never try to acces x(-1).

    If you don't want to use a loop, you can just create vectors for x[n] and x[n-1] over a big range of n, and just compute y by subtracting those long vectors.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?