一、摘要
这里主要是对窗函数的简单应用做些介绍,是在已知滤波器阶数的情况下,设计滤波器。多数情况下,在不能直接知道滤波器阶数的时候,可参考“http://www.cnblogs.com/sunev/archive/2011/11/23/2260579.html”。
二、MATLAB中的窗函数
(1)矩形窗(Rectangle Window) 调用格式:w=boxcar(n),根据长度 n 产生一个矩形窗 w。
(2)三角窗(Triangular Window) 调用格式:w=triang(n),根据长度 n 产生一个三角窗 w。
(3)汉宁窗(Hanning Window) 调用格式:w=hanning(n),根据长度 n 产生一个汉宁窗 w。
(4)海明窗(Hamming Window) 调用格式:w=hamming(n),根据长度 n 产生一个海明窗 w。
(5)布拉克曼窗(Blackman Window) 调用格式:w=blackman(n),根据长度 n 产生一个布拉克曼窗 w。
(6)恺撒窗(Kaiser Window) 调用格式:w=kaiser(n,beta),根据长度 n 和影响窗函数旁瓣的β参数产生一个恺撒窗w。
三、基于窗函数的 FIR 滤波器设计
利用 MATLAB 提供的函数 fir1来实现
调用格式:fir1(n,Wn,’ftype’,Window),n 为阶数、Wn 是截止频率(如果输入是形如[W1 W2]的矢量时,本函数将设计带通/带阻滤波器。
[例]设计一个长度为 8 截止频率为0.4π的线性相位 FIR 滤波器。
用矩形窗:
Window=boxcar(8);
b=fir1(7,0.4,Window);
freqz(b,1)
用blackman窗:
Window=blackman(8);
b=fir1(7,0.4,Window);
freqz(b,1)
[例] 设计线性相位带通滤波器,其长度N=15,上下边带截止频率分别为W1= 0.3π,W2=0.5π
Window=blackman(16);
b=fir1(15,[0.3 0.5],Window);
freqz(b,1)