[英]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.