0
num = zeros(1,freq);
den = zeros(1,freq);
for R = 1:freq
[num(R), den(R)]=butter(4, [0.1 0.9]);
end
我認爲這是相當微不足道的,但一旦我運行它,我得到:Matlab的矢量返回到多個矢量
在一個分配A(I)= B,B中的元素的數量和我必須是一樣的。
我在做什麼錯?
num = zeros(1,freq);
den = zeros(1,freq);
for R = 1:freq
[num(R), den(R)]=butter(4, [0.1 0.9]);
end
我認爲這是相當微不足道的,但一旦我運行它,我得到:Matlab的矢量返回到多個矢量
在一個分配A(I)= B,B中的元素的數量和我必須是一樣的。
我在做什麼錯?
你所做錯的是,無論num
和den
將包含多個係數:
[b,a] = butter(n,Wn)
返回一個n階低通數字巴特沃斯歸一化截止頻率Wn
濾波器的傳遞函數係數。
b
,a
- 傳遞函數係數 行向量
複製到讓你的代碼工作將是要麼設置num
和den
到矩陣的方式,或以單元陣列:
num = zeros(freq,4);
den = zeros(freq,4);
for R = 1:freq
[num(R,:), den(R,:)]=butter(4, [A(R) B(R)]); % matrix
end
for R = 1:freq
[num{R}, den{R}]=butter(4, [A(R) B(R)]); % cell
end
可能矩陣被下注適合你的目的。
我知道這是一個愚蠢的錯誤,但30分鐘後看起來無能爲力,我需要別人幫助。謝謝你的時間! –
沒問題,我很高興能幫到 – Adriaan
@MiguelHorta當心''''''''''''''''''''輸出形式的'黃油'。它可以很容易地給出大的數值誤差。零極點形式避免了這一點。請參閱[這裏](http://stackoverflow.com/a/23665440/2586922) –