figure(8)
plot(fk,20*log10(abs(Hk))); grid on
title('带通滤波器的频响3') xlabel('频率(Hz)'); ylabel('幅度(dB)')
axis([100,400,-40,5])
3.5用设计的滤波器对信号进行滤波
滤波后的频谱图跟原信号的频谱图有一点差别,这是因为设计的滤波器不可能完全达到理想状态。
3.5.1用低通滤波器对x进行滤波
[Bz,Az]=bilinear(b,a,1000); y=filter(Bz,Az,x); Y1=fft(y,512); figure(5); subplot(211); plot(y);
title('??2¨oóx1μ?ê±óò2¨D?'); axis([0,200,-1,1]) subplot(212);
plot(f1,abs(Y1(1:256))); title('??2¨oóx1μ??μ?×2¨D?');
3.5.2用带通滤波器2对x进行滤波
[Bz1,Az1]=bilinear(B1,A1,1000); y2=filter(Bz1,Az1,x); Y2=fft(y2,512); figure(7); subplot(211); plot(y2);
title('??2¨oóx2μ?ê±óò2¨D?'); axis([0,200,-1,1])
3.5.3 用带通滤波器3对x进行滤波
[Bz2,Az2]=bilinear(B2,A2,1000); y3=filter(Bz2,Az2,x); Y3=fft(y3,512); figure(9); subplot(211); plot(y3);
title('??2¨oóx3μ?ê±óò2¨D?'); axis([0,200,-1,1])
3.6 GUI界面设计
滤波前波形:
滤波后波形:
4 实验结果与数据处理
4.1测试步骤
1. 各个模块逐一调试
按照任务书的要求依次进行编程设计,依次实现各部分的功能。首先是利用MATLAB语言产生三个不同频段的信号,接着对其进行FFT变换,然后将三个叠加,分别观察其对应的波形是否符合预想当中的结果;确认信号波形无误后,开始设计低通和带通巴特沃斯滤波器,并运用所设计的3个滤波器对叠加信号进行滤波,还原到3个不同频率的信号x1,x2,x3。所得到的3个信号频率应与所产生的3个原始信号频率相同。 2. 制作GUI界面
(1) 首先,对显示界面进行排版,确定各部分内容的摆放位置; (2) 对控制按钮加载程序进行控制; (3) 改进程序,调整显示效果。
4.2 实验现象及数据分析
1、经过调试仿真(仿真图在模块介绍中),各模块的功能都得到实现。 2、GUI界面布局简洁明了,显示效果良好,让人一目了然。
3、在调试过程当中,对于滤波后的x1,x2,x3的时域波形图在起始的阶段的衰减比较严重,而且衰减的带宽也比较大。后来经过不断的摸索,我们终于找到了问题所在。我们调整了所设计的3个滤波器的衰减系数Rp和As,使其更加合理,最后显示效果也得到了改善。