Plot step response of transfer function
조회 수: 197 (최근 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);
채택된 답변
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
2022년 11월 4일
Hi @Ye Ken Kok
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
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Bartlett에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!