2015-09-29 44 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) –