繁体   English   中英

我绘制结果时,Octave impz函数出现问题

[英]Problems with Octave impz function, in the moment I plot results

我对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误差:从称为> check_stem_arg在管线276列在第11行 37柱在管线40干127列第4行第1列8 questao6_lab2

我了解是因为轴的不同。 虽然,我不明白为什么八度只给h一个值。 Impz函数应该沿n的所有值描述一条曲线,但我没有。

谢谢

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

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

而您期望一个包含100个元素的向量(Matlab就是这样做的)。 在Matlab中,第三个参数( N )可以是表示脉冲响应样本数量的标量,也可以是指定在何处计算脉冲响应的值的向量。 在八度中,您只能指定多个样本。 因此改为:

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

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

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

我之所以使用(:)而不是.' (transpose)是这样,它可以继续在信号包的下一版本中修复该问题 或者,运行which impz来找到Octave的impz函数的来源,然后立即为它自己修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM