几种重要的MATLABFIR滤波器设计函数如表3-2所列。
表3-2 常用FIR滤波器设计函数
1.标准通带设计函数fir1
fir1函数实现了加窗线性相位FIR数字滤波器设计的经典方法,主要用于标准的通带滤波器设计,如低通、高通、带通和带阻数字滤波器设计。调用的句法有:
●b=firl(n,Wn):返回基于汉明窗的n阶线性相位FIR低通滤波器的n+1个系数b。Wn为归一化截止频率,在[0,1]区间取值,这里1对应奈奎斯特(Nyquist)频率。
●b=firl(n,Wn'ftype'):指定滤波器的类型,这里的ftype可以是“high”(指定一个截止频率为Wn的高通滤波器)、“stop”(指定一个带阻滤波器)、“DC-1”(指定多带滤波器的第一频带为带通)或是“DC-0”(指定多带滤波器的第一频带为带阻)。
●b=firl(n,Wn,window):用长度为n+1的列向量window指定窗函数,如果未给定义,则fir1取长度为n+1的汉明窗。
●b=firl(n,Wn,'ftype',window):是前述两种情况的综合,也就是说可以同时指定'ftype'和window参数。
●b=firl(…,'normalization'):规定是否滤波器的幅度被归一化处理,字符串normalization可以是以下两种:
'scale'(default):归一化滤波器,使幅度响应在通带中心频率处为0dB。
'noscale':不进行归一化处理。
2.多带设计函数fir2
fir2函数也实现了加窗的FIR数字滤波器设计,但是它针对的是具有任意形状的分段线性频率响应。这个特点在fir1中是受限制的,因为fir1函数只能设计低通、高通、带通和带阻线性相位的FIR滤波器。fir2函数的调用语句为:
●b=fir2(n,f,m):返回n阶(n点)FIR滤波器的n+1个(行向量)系数b。它的幅频特性与向量f和m给出的(幅频特性)相匹配。这里f是[0,1]区间的频点向量,1对应于奈奎斯特(Nyquist)频率。f的第一个点必须是0,最后一个点必须是1。即频点向量f必须是递增排列。m是一个对应频点向量f的期望幅度响应向量。f和m必须等长度。滤波器的形状可以用plot(f,m)绘制。
●b=fir2(n,f,m,window):用长度为n+1的列向量window指定窗函数。如果未指定窗,则fir2取长度为n+1的汉明窗。
●b=fir2(n,f,m,npt):用npt指定点数。npt是期望频率响应插值形成的均匀致密分布的网格。
●b=fir2(n,f,m,npt,window):用npt指定点数,并且加窗。(www.xing528.com)
●b=fir2(n,f,m,npt,lap):用lap指定域大小。如果f的两个顺序值相同,则围绕这个频率,fir2将在要求的频率响应范围内设置一个重叠的区域,以便提供一个平滑但陡峭的过渡。lap的默认值是25。
b=fir2(n,f,m,npt,lap,window)用lap指定域大小,并且加窗。
3.升余弦FIR滤波器设计函数firrcos
firrcos函数的主要调用句法是:
●b=firrcos(n,F0,df,fs)或b=firrcos(n,F0,df,fs,'bandwidth'):返回具有升余弦过渡带的n阶FIR低通线性相位滤波器的系数行向量b。
●b=firrcos(n,F0,df):使用默认采样频率fs=2。
●b=firrcos(n,F0,r,fs,'rolloff'):将括号中的第三个参量r视为衰减因子,用来代替过渡带宽df。这里r必须在[0,1]范围取值。
●b=firrcos(…,'type'):括号中的字符串'type'的赋值可指定为'normal'或'sqrt'。前者用于设计标准的升余弦滤波器,这是系统默认的算法。后者用于设计均方根升余弦滤波器。
●b=firrcos(…'type',delay):在[0,n+1]区间指定一个整数延迟。对偶数n默认延时是n/2,对奇数n默认延时是(n+1)/2。
●b=firrcos(…,'type',delay,window):对设计的滤波器进行加窗运算以减小频率响应的波纹。窗必须是长为n+1的列向量。
【例3-4】设计一个20阶升余弦滤波器,已知滤波器的截止频率是0.25,过渡带宽为0.25。
解:调用firrcos设计函数并绘图:
设计结果如图3-15所示。
图3-15 20阶升余弦滤波器的频率响应
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。