2015-09-29 42 views
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中的元素的數量和我必須是一樣的。

我在做什麼錯?

回答

3

你所做錯的是,無論numden將包含多個係數:

[b,a] = butter(n,Wn)返回一個n階低通數字巴特沃斯歸一化截止頻率Wn濾波器的傳遞函數係數。

ba - 傳遞函數係數 行向量

由於從documentation

複製到讓你的代碼工作將是要麼設置numden到矩陣的方式,或以單元陣列:

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 

可能矩陣被下注適合你的目的。

+0

我知道這是一個愚蠢的錯誤,但30分鐘後看起來無能爲力,我需要別人幫助。謝謝你的時間! –

+0

沒問題,我很高興能幫到 – Adriaan

+1

@MiguelHorta當心''''''''''''''''''''輸出形式的'黃油'。它可以很容易地給出大的數值誤差。零極點形式避免了這一點。請參閱[這裏](http://stackoverflow.com/a/23665440/2586922) –