Johnlubao 发表于 2007-8-20 02:10

滤波器组合后的频率响应图编程请教

有2个问题想要请教.
第1个问题, 当我画出几个独立滤波器的频率响应图后,怎么来画这几个滤波器组合后的频率响应图.
下面是我的程序
clear all;
b1 =; %第1个滤波器的系数
a1 =;
= freqz(b1,a1,5000,2400);%第1个滤波器的频率响应
b2 =; %第2个滤波器的系数
a2 = ;
= freqz(b2,a2,5000,'whole',300);%第2个滤波器的频率响应
b3 =;%第3个滤波器的系数
a3 = ;
= freqz(b3,a3,5000,300);%第3个滤波器的频率响应
b4 =;
a4 = ;第4个滤波器的系数
= freqz(b4,a4,5000,'whole',75);%第4个滤波器的频率响应
plot(f1, 20*log10(abs(H1)),'b');hold on;
plot(f2, 20*log10(abs(H2)),'g');hold on;
plot(f3, 20*log10(abs(H3)),'m:');hold on;
plot(f4, 20*log10(abs(H4)),'r-.');hold on;
H=20*log10(abs(H2))+20*log10(abs(H3))+20*log10(abs(H4));%第2,第3,第4个滤波器的增益求和
plot(f3,H,'k--'), grid on;%貌似问题出在这里,但我不太清楚这里的横坐标应该怎么取比较合适
title('3-dB frequency response of two IIR filter');
xlabel('Frequency(MHz)'), ylabel('Voltage gain(dB)');
legend('MA at RF','IIR at RF/8, a1=0.9581','MA 4 at RF/8','IIR at RF/32, a2=0.8323','cascaded(IIR1+FIR2+IIR2)','Location','SouthWest');

上面这个程序执行后,大概的图形是正确的,但是不准确,请看图,我标出了3-dB频率响应点的坐标,图中显示综合后,在2MHz下的增益衰减到了19.89dB,但实际上2个IIR滤波器在2MHz下的衰减总共是5.542dB,而组合的波形却显示衰减了7.67dB.凭空多了2个dB的衰减(图里面的FIR滤波器有一个没有在计算组合波形时出现,另外一个在2MHz点的衰减近似于0).

[ 本帖最后由 Johnlubao 于 2007-8-20 02:31 编辑 ]

Johnlubao 发表于 2007-8-20 02:30

第2个问题,用simulink建立模型后,我用to workspace讲数据导入后用plot(tout, simout)画波形,但是系统却提示我说vectors must be the same lengths.请问这是为什么? tout需要设置吗?还是说用to workspace导入后,直接用plot(tout, simout)就可以?

花如月 发表于 2007-8-20 09:07

第一个问题:不准确是正常的,估计是你的设计方法引起的
第二个问题:我回答了好几次了,你的错误提示在置顶帖子里有。我没有用过toworkspace但是在仿真结束后,可以直接通过plot(tout,yout)来绘制out模块的输出波形。

hplsh 发表于 2010-4-12 15:22

为什么24.64-2.622!=19.89?

hplsh 发表于 2010-4-12 15:25

应该是横轴的刻度不统一造成的吧
页: [1]
查看完整版本: 滤波器组合后的频率响应图编程请教