【发布时间】:2017-02-08 21:30:37
【问题描述】:
我正在 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
【问题讨论】:
-
可能是
stem正在策划“问题”。如果你只做stem(1:10),“x 轴”将从1而不是0开始。我没有一些工具箱,所以我无法测试和验证。 -
@mpaskov 实际上我让 MATLAB 用它的虚拟轴进行绘图。我在许多其他实现中都这样做了,但是当我在这个例子中尝试它时,增量向右移动了一个。 !!!
-
正是 matlab 的虚拟轴从
1开始,这是脉冲的第一个值,这不是您所期望的吗? -
@mpaskov 是的,我不期待这种转变。我尝试使用
syms绘制许多其他示例,但没有发生这种转变,尽管我在syms示例中使用了虚拟轴。这就是我不明白的。 -
如果你是
stem(0:length(hz)-1,impulse(hz*Ts)),那看起来怎么样?