Octave impz函数的问题,在我绘制结果的那一刻

时间:2017-03-31 06:03:16

标签: matlab octave

我是Matlab和Octave" World"的新手。我已经痛苦了几个小时才能制作一个简单的脚本。问题是,我的老师在Matlab上写了这篇文章,但是我无法找到一种方法让它在Octave上运行。脚本找到系统的脉冲答案并绘制曲线。这是:

b = [1]; a = [1, -1, 0.9]; n = [0:100];
h = impz(b,a,n);
stem(n,h);
subplot(1,1,1);
title('Impulse Response'); xlabel('n'); ylabel('h(n)');

错误是:

  

错误:词干:X和Y错误的大小不一致:从中调用        stem > check_stem_arg在第276行第11行       第37栏第40栏词干       第127栏第8栏       questao6_lab2在第4行第1列

据我所知,这是因为轴差异。虽然,我不明白为什么octave只给h一个值。函数Impz应该描述n的所有值的曲线,但我不会。

由于

1 个答案:

答案 0 :(得分:0)

问题来自impz在这种情况下返回标量

octave-gui:26> h = impz (1, [1, -1, 0.9], 0:100)
h =  1

当你期望一个包含100个元素的向量时(这就是Matlab所做的)。在Matlab中,第三个参数(N)可以是标量,表示脉冲响应的样本数,或者是指定计算脉冲响应的值的向量。在Octave中,您只能指定多个样本。所以这样做:

h = impz (1, [1, -1, 0.9], 101);

此外,似乎Octave返回行向量而不是列向量,所以这样做:

h = impz (1, [1, -1, 0.9], 101)(:);

我使用(:)代替.'(转置)的原因是它继续在this will be fixed的信号包的下一版本中工作。或者,运行which impz以找到Octave impz函数的来源,并立即自行修复。