我在MATLAB上实现Z-Domain TF。在绘制极点图时,我发现它是正确的,我没有问题。问题是当我绘制脉冲响应时;即h(n)
;我发现第一个delta总是移一个,因此所有其他的delta也会移位。为什么会发生这种转变?有没有人对这个问题有任何想法?
我提供了一个我已经实施过的很多例子。
close all;clear;clc;
Ts = 0.1;
num = 1; % b
den = 1; % a
hz = tf(num, den, Ts, 'variable', 'z^-1')
%% Plotting
figure(1)
subplot(2,1,1)
pzplot(hz)
axis equal
subplot(2,1,2)
stem(impulse(hz*Ts))
axis([0 10 0 1.1])
grid minor
答案 0 :(得分:1)
问题在于绘图而不是结果。如果你没有指定'x-axis'的值,matlab将创建一个虚拟变量,它从1
开始,以向量的长度结束,基本上是1:length(y)
。您应该创建自己的x向量(并根据@Florian的建议进行缩放):
response = impulse(hz*Ts);
timevector = (0:length(response)-1)*Ts;
stem(timevector,reponse);
grid minor;