【问题标题】:Impulse Response in Z - Domain of a Transfer Function in MATLABZ 中的脉冲响应 - MATLAB 中传递函数的域
【发布时间】: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)),那看起来怎么样?

标签: matlab response


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多