How can I implement a simple difference equation and plot the resulting output, all using MATLAB
Ältere Kommentare anzeigen
I have a simple case of all initial conditions to be zero. We can consider a general form as:
a0y(n) = b0x(n) + b1x(n-1) + b2x(n-2) + ...+ bM x(n-M)
-a1y(n-1) - a2y(n-2) - ...- aN y(n-N)
I have to plot the output y(n) with n varying from 0 to 500.
Both y(n) and x(n) are zero for n<0.
1 Kommentar
Ahmed ElTahan
am 25 Mär. 2016
Here is a function I have built to calculate it with added example. https://www.mathworks.com/matlabcentral/fileexchange/56142-output-estimation-difference-equation
Antworten (4)
Wayne King
am 4 Dez. 2013
You have not said what x(n) is, is it a white noise input. Is it the Kronecker delta sequence.
If we don't know that x(n) is we certainly can't tell you what y(n) is.
If you know x(n), you can implement using filter
B = [b0 b1 b2 b3 .... bM];
A = [1 a1/a0 a2/a0 ... ];
x(n) = zeros(100,1);
x(1) = 1; % Kronecker delta input
y = filter(B,A,x);
1 Kommentar
upinderjeet
am 5 Dez. 2013
Wayne King
am 5 Dez. 2013
Bearbeitet: Wayne King
am 5 Dez. 2013
Please look at the help for rand
x = -1+ 2*rand(100,1);
B = [b0 b1 b2 b3 .... bM];
A = [1 a1/a0 a2/a0 ... ];
y = filter(B,A,x);
1 Kommentar
upinderjeet
am 5 Dez. 2013
sixwwwwww
am 5 Dez. 2013
may be you can try something like this:
N = 500;
for n = 1:N
xValues = sum(randi(10, 1, n) .* (rand(1, n) - 1));
yValues = sum(randi(10, 1, n - 1) .* (rand(1, n - 1) - 1));
y(n) = xValues - yValues;
end
plot(1:N, y)
2 Kommentare
upinderjeet
am 5 Dez. 2013
sixwwwwww
am 5 Dez. 2013
you can discrete the plot the following way:
plot(x, y, '*')
Mohazam Awan
am 10 Okt. 2017
y1=zeros(1,length(n)); % Pre-allocating
for i=1:length(n)
if(n(i)<0)
y1(i)=0; % $ y[n]=0 for n<0
end
if (n(i)>=0)
y1(i)=y1(i-1)+x(i);
end
end
Kategorien
Mehr zu Labels and Styling finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!