Plot step response of transfer function

42 次查看(过去 30 天)
I am trying to plot the step function of a difference equation. The equation is given by y(n) + 1/4*y(n-1) + 1/2*y(n-2) = x(n) + 1/2*x(n-1). Where x(n) is supposed to be the input and y(n) is the output. The error is as shown:
Is there no way to plot it using the step function?
Code:
num = [1 -1/4 -1/2];
den = [1 1/2];
s = step(num,den);
stem(s);
  1 个评论
Ye Ken Kok
Ye Ken Kok 2022-11-4
Sorry fot not including the input signal for x(n). Here is the input signal.
F1 = 20;
F2 = 40;
F3 = 60;
Fs = 2*F3;
t = 0:0.001:2-0.001;
n = 0:100;
x = 10*sin(2*pi*F1*t)+10*sin(2*pi*F2*t)+10*sin(2*pi*F3*t);
xn = 10*sin(2*pi*(F1/Fs)*n)+10*sin(2*pi*(F2/Fs)*n)+10*sin(2*pi*(F3/Fs)*n);

请先登录,再进行评论。

采纳的回答

Mathieu NOE
Mathieu NOE 2022-11-4
hello
you have 2 mistakes to correct
1 - how to get a z transfer function from the difference equation
your num and den are wrong (signs are wrong and you flipped num with den)
this might help
2 - you have a discrete not a continuous time model so use dstep instead of step
num = [0 1 1/2];
den = [1 1/4 1/2];
s = dstep(num,den);
stem(s);
all the best

更多回答(1 个)

Sam Chak
Sam Chak 2022-11-4
It is a input-output difference equation. Thus, you cannot use the continuous-time Laplace transform.
Since the input is not provided, here is just a simple example.
dt = 0.001;
t = 0:dt:20; % sample times
ykm1 = 0; % initial value of y(k - 1)
ykm2 = 0; % initial value of y(k - 2)
xkm1 = 0; % initial x(k - 1)
xk = 0; % initial x(k)
Y = []; % placeholder for y(k) array
X = []; % placeholder for x(k) array
for k = 1:length(t)
% input-output difference equation
% y(n) = - 1/4*y(n-1) - 1/2*y(n-2) + x(n) + 1/2*x(n-1)
yk = - 1/4*ykm1 - 1/2*ykm2 + 1*xk + 1/2*xkm1;
ykm2 = ykm1; % when time advances, y(k - 1) becomes y(k - 2)
ykm1 = yk; % when time advances, y(k) becomes y(k - 1)
xkm1 = xk;
xk = sin(.05*pi*t(k));
Y = [Y yk];
end
plot(t, Y, 'linewidth', 1.5), grid on

类别

Help CenterFile Exchange 中查找有关 Digital Filter Analysis 的更多信息

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by