Z 方向的脉冲响应 - MATLAB 中传递函数的域

Impulse Response in Z - Domain of a Transfer Function in MATLAB

我正在 MATLAB 上实现 Z-Domain TF。在绘制零极点图时,我发现它是正确的,我对此没有问题。问题是当我绘制脉冲响应时;即 h(n);我发现第一个增量总是移动一个,因此所有其他增量也被移动。为什么会发生转变?有人知道这个问题吗?

我已经提供了一个简单的例子,我已经实现了很多。

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

问题在于绘图而不是结果。如果您没有指定 'x-axis' 的值,matlab 将创建一个虚拟变量,它从 1 开始并以向量的长度结束,本质上是 1:length(y)。您应该创建自己的 x-vector(并按照@Florian 的建议对其进行缩放):

response = impulse(hz*Ts);
timevector = (0:length(response)-1)*Ts;
stem(timevector,reponse);
grid minor;