当前位置:首页 > 7章++FIR滤波器设计
矩形窗 -13 汉宁窗 -31 哈明窗 -41 Bartlett窗 -25 Blackman 窗 -57 三角窗 -25 Kaiser窗 Chebyshev 窗 可调整 可调整 可调整 可调整
主旁瓣频率宽度还与窗函数长度N有关。增加窗函数长度N将减小窗函数的主瓣宽度,但不能减小旁瓣幅值衰减的相对值(分贝数),这个值是由窗函数决定的。这个特点可由下面的例子清楚地看出。
【例7-3】绘制矩形窗函数的幅频响应,窗长度分别为:(1)N=10;(2)N=20; (3)N=50;(4)N=100.
%Samp7_3 clf;Nf=512; for ii=1:4 switch ii case 1
Nwin=10; case 2
Nwin=20;
case 3
Nwin=50; case 4 Nwin=100; end
w=boxcar(Nwin); %矩形窗
[y,f]=freqz(w,1,Nf); %用不同的窗长度求得复数频率特性 mag=abs(y); %求得幅频特性 posplot=['2,2,' int2str(ii)]; %指定绘图位置 subplot(posplot);
plot (f/pi,20*log10(mag/max(mag))); %绘出幅频形状 xlabel('归一化频率');ylabel('振幅/dB');
stext=['N=' int2str(Nwin)]; %给出标题,指出所用的数据个数 title(stext);grid on; end
图 7-4 数据长度不同的矩形窗的幅频形状
程序运行结果见图7-4。显然,随着N的增大,主瓣和旁瓣都变窄,但第一旁瓣相对主瓣的幅值下降分贝数相同,第二旁瓣相对第一旁瓣幅值下降的分贝数也相同。这样,随着N的增大,旁瓣也得到抑制,有力地减少了频谱泄漏,但不能完全消除。减少主瓣宽度和抑制旁瓣是一对矛盾,不可兼得,只能根据不同用途折衷处理。
7.2.3 运用窗函数设计数字滤波器
用于信号分析中的窗函数可根据用户的不同要求选择。用于滤波器的窗函数,一般要求窗函数的主瓣宽度窄,以获得较好的过渡带;旁瓣相对值尽可能少,增加通带的平稳度和增大阻带的衰减。
基于窗函数的FIR数字滤波器设计的算法十分简单,其主要步骤为:
(1)对滤波器理想频域幅值响应进行傅立叶逆变换获得理想滤波器的单位脉冲响应hd(n)。一般假定理想低通滤波器的截止频率为,其幅频特性满足
则根据傅立叶逆变换,单位脉冲响应为: (7-19)
(7-20)
其中,为信号延迟。 (2)由性能指标(阻带衰减的分贝数)根据表7-2第3列的值确定满足阻带衰减的窗函数类型w(n)。
滤波器的阶数越高,滤波器的幅频特性越好,但数据处理的费用也越高,因此像IIR滤波器一样,FIR滤波器也要确定满足性能指标的滤波器最小阶数。由前面的讨论(图7-1)可知,滤波器的主瓣宽度相当于过渡带宽,因此,使过渡带宽近似于窗函数主瓣宽(表7-2
中的第二列)可求得满足性能指标的窗口长度N,此时,信号延迟为(N-1)/2。
(3)求实际滤波器的单位脉冲响应h(n):根据h(n)=hd(n)*w(n)。 (4)检验滤波器的性能。可设定一些信号采用 7.1.2 节指出的函数或6.3.2节所给的函数进行滤波。
下面采用实例说明如何根据上面步骤设计FIR滤波器。
【例 7-4】 用窗函数设计一个线性相位FIR低通滤波器,并满足性能指标:通带边界的归一化频率wp=0.5,阻带边界的归一化频率ws=0.66,阻带衰减不小于30dB,通带波纹不大于3dB。假设一个信号,其中f1=5Hz,f2=20Hz。信号的采样频率为50Hz。试将原信号与通过滤波器的信号进行比较。
由题意,阻带衰减不小于30dB,根据表7-2,选取汉宁窗,因为汉宁窗的第一旁瓣相对主瓣衰减为31dB,满足滤波要求。在窗函数设计法中,要求设计的频率归一化到
0~区间内,Nyquist频率对应于,因此通带和阻带边界频率为0.5和0.66。程序如下
%Samp7_4 wp=0.5*pi;ws=0.66*pi; %滤波器边界频率 wdelta=ws-wp; %过渡带宽
N=ceil(8*pi/wdelta) %根据过渡带宽等于表 7-2中汉宁窗函数主瓣宽求得滤波器所用窗函数的最小长度 Nw=N;
wc=(wp+ws)/2; %截止频率在通带和阻带边界频率的中点 n=0:N-1;
alpha=(N-1)/2; %求滤波器的相位延迟
m=n-alpha+eps; %eps为MATLAB系统的精度
hd=sin(wc*m)./(pi*m); %由(7-20)式求理想滤波器脉冲响应 win=hanning(Nw); %采用汉宁窗
h=hd.*win'; %在时间域乘积对应于频率域的卷积 b=h; figure(1)
[H,f]=freqz(b,1,512,50); %采用 50 Hz 的采样频率绘出该滤波器的幅频和相频响应 subplot(2,1,1),plot(f,20*log10(abs(H))) xlabel('频率/Hz');ylabel('振幅/dB');grid on; subplot(2,1,2),plot(f,180/pi*unwrap(angle(H))) xlabel('频率/Hz');ylabel('相位/^o');grid on;
%impz(b,1); %可采用此函数给出滤波器的脉冲响应 %zplane(b,1); %可采用此语句给出滤波器的零极点图 %grpdelay(b,1); %可采用此函数给出滤波器的群延迟 f1=3;f2=20; %检测输入信号含有两种频率成分 dt=0.02; t=0:dt:3; %采样间隔和检测信号的时间序列
x=sin(2*pi*f1* t)+cos(2* pi*f2* t); %检测信号
%y=filter(b,1,x); %可采用此函数给出滤波器的输出 y=fftfilt(b,x); %给出滤波器的输出 figure(2)
subplot(2,1,1), plot(t,x),title('输入信号') %绘输入信号 subplot(2,1,2),plot(t,y) % 绘输出信号
hold on; plot([1 1]*(N-1)/2*dt,ylim, 'r') %绘出延迟到的时刻 xlabel('时间/s'),title('输出信号')
程序运行结果见图7-5和图7-6。该例设计通带边界wp=0.5,阻带边界频率ws=0.66,对应于50Hz的采样频率通带边界频率为fp=Fs/2*Fnormal=50/2*0.5=12.5Hz, fs=50/2*0.66=16.5Hz, 其中Fs为采样频率,Fnormal为归一化频率。由图7-5上图可以看到,在小于12.5Hz的频段上,几乎看不到下降,即满足通带波纹不大于3dB的要求。在大于16.5Hz的频段上,阻带衰减大于30dB,满足设计要求。由图7-5下图可见,在通带范围内,相位频率为一条直线,表明该滤波器为线性相位。图7-6给出了滤波器的输入信号和输出信号,输入信号包括3Hz和20Hz的信号,由图7-5可知,20Hz的信号不能通过该滤波器,通过滤波器后只剩下3Hz的信号,输出结果也证明了这一点。但要注意,由于FIR滤波器所需的阶数较高,信号延迟(N-1)/2也较大,输出信号前面有一段直线就是延迟造成的。上述程序显示的N取50才能满足设计要求。这样相位延迟为(N-1)/2*1/Fs=0.49s,可以看到输出信号前面一段直线的距离大约为0.49s。验证了FIR滤波器相位延迟的理论。在输出信号的前部,有一些小信号,这是截断信号边界所致,后面的部分就没有了这种信号。若采用零相位的filtfilt函数(说明见第六章第三节)输出,则可最大限度地减小边界的影响。
图 7-5 例7-4所设计滤波器的幅频响应(上图)和相频响应(下图)
共分享92篇相关文档