簡體   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