2012-12-18 167 views
0

我使用butterworth IIR构建了一个设计4个滤波器的代码。低,高,带通和带阻。 输入Diolog窗口打开采取在用户输入,我设置的默认值,以:如何使用MATLAB绘制巴特沃思滤波器的频率响应

def = {'5','200','40','50','3','30'}; for Low and High pass 
AND 
def = {'5','500','60', '200','50','250','3','30'}; for bandpass and bandstop 
Order of Filter 
Fsampling (Hz) 
Fpass (Fpass 1 and 2) (Hz) 
Fstop (Fstop 1 and 2) (Hz) 
Ripple factors (dB) 
Stop attenuation (dB) 

的时间being.and使用for循环(1 - > 4),以计算B和A分量

[n Fn] = buttord(Fpass,Fstop,Rp,Rs); 
    [B,A] = butter(N,Fn,str); 
    B_Comp{i} = B; 
    A_Comp{i} = A; 

Now..I需要绘制其频率响应为每个过滤器,所以使用

for i=1:4 
    freqz(B_Comp(i),A_Comp(i)); 
    figure; 
end 

但这个错误出现:

??? Function 'fft' is not defined for values of class 'cell'. 
Error in ==> fft at 36 
    [varargout{1:nargout}] = builtin('fft', varargin{:}); 

Error in ==> freqz at 94 
    h = dividenowarn(fft(b,s.*nfft),fft(a,s.*nfft)).'; 

Error in ==> dsp1 at 62 
    freqz(B_Comp(i),A_Comp(i)); 

我如何解决这个问题..任何帮助表示赞赏

回答

3

当你想fft不使用电池,尝试使用cell2mat之前。例如:

freqz(cell2mat(B_Comp(i)),cell2mat(A_Comp(i))); 
+1

我能不能用:freqz(B_Comp {I},{A_Comp我})..请注意括号,而不是括号 – user1111726

+0

这是另一种选择,但你已经知道... – bla

相关问题