这个例子展示了如何基于频率响应规范设计FIR和IIR滤波器designfilt
功能在信号处理工具箱®产品中。该示例集中于低通过滤器,但大多数结果也适用于其他响应类型。
这个例子着重于数字滤波器的设计,而不是它们的应用。如果您想了解更多关于数字滤波器的应用,请参阅数字滤波实用导论的例子。
低通滤波器的规范
理想的低通滤波器是留下指定截止频率以下信号的所有频率分量的低通滤波器。 ,并拒绝上述所有组件 .由于实现理想低通滤波器所需的脉冲响应是无限长的,因此不可能设计一个理想的FIR低通滤波器。理想脉冲响应的有限长度近似导致通带( )和阻带( ),以及通带和阻带之间的非零过渡宽度。
当近似于有限脉冲响应时,通带/阻带波纹和过渡宽度都是不可取的,但不可避免地偏离理想低通滤波器的响应。这些偏差如下图所示:
实用的FIR设计通常由过滤器的过滤器组成,该过滤器具有不超过允许值的过渡宽度和最大通带和停车纹波。除了这些设计规范外,必须选择滤波器顺序,或者等效地,截断脉冲响应的长度。
在过滤器设计中,设计规范的一个有用比喻是将每个规范看作下图中三角形中的一个角。
三角形用于理解选择设计规格时可用的自由度。因为角度的和是固定的,所以最多可以选择两个规格的值。第三个规范将由特定的设计算法决定。此外,就像三角形的角度一样,如果我们使其中一个规格变大/变小,它将影响另一个或两个规格。
FIR滤波器是非常吸引人的,因为它们固有的稳定性和可以被设计成线性相位。尽管如此,这些滤波器可以有很长的瞬态响应,在某些应用程序中可能会证明计算代价昂贵。
最小订单冷杉设计
最小阶设计通过指定通带和阻带频率以及通带纹波和阻带衰减得到。然后设计算法选择符合规范的最小滤波器长度。
设计一个最小阶低通FIR滤波器,通带频率为0.37*pi rad/sample,阻带频率为0.43*pi rad/sample(因此过渡宽度为0.06*pi rad/sample),通带纹波为1 dB,阻带衰减为30 dB。
Fpass = 0.37;fstop = 0.43;美联社= 1;Ast = 30;d = designfilt('低通道',“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,“StopbandAttenuation”, Ast);hfvt = fvtool (d);
可以使用所产生的过滤器顺序使用filtord
功能。
N = filtord (d)
N = 39
你可以使用信息
获取有关用于设计过滤器的参数的信息的功能
信息(D)
ans =.17 x44 char数组'FIR Digital Filter(Real)''----------------------''''''''''''''''''''''''''''''''''''''s Length:40''稳定:是''线性阶段:是(类型2)''''''设计方法信息''设计算法:Equiripple'''设计规格'采样率:n / a(归一化频率)''响应:低通'规格:fp,fst,ap,AST''通带边缘:0.37''停机带。:30 dB'通带纹波:1 dB'停止边缘:0.43'
的designfilt
函数默认选择equiripple设计算法。线性相位等纹波滤波器是理想的,因为对于给定的阶数,它们与理想滤波器的最大可能偏差最小。
但请注意,也可以使用kaiser窗口获得最小订单设计。即使KAISER窗口方法为相同规格产生较大的过滤器顺序,算法较少计算地昂贵,当设计规范非常严格时,算法较低且可能具有收敛问题。如果应用程序需要非常窄的过渡宽度或非常大的停止带衰减,则可能发生这种情况。
用Kaiser窗法设计一个与上述相同规格的滤波器,并比较其与等纹波滤波器的响应。
dk = designfilt ('低通道',“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,'DesignMethod',“kaiserwin”);addfilter (hfvt dk);传奇(hfvt“Equiripple设计”,Kaiser窗设计的)
N = filtord (dk)
n = 52.
以赫兹为单位指定频率参数
如果你知道滤波器工作的采样率,你可以指定采样率和以赫兹为单位的频率。重新设计最小阶等纹波滤波器的采样率为2 kHz。
成就= 370;Fstop = 430;美联社= 1;Ast = 30;Fs = 2000;d = designfilt('低通道',“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,'采样率'Fs);hfvt = fvtool (d);
固定顺序,固定过渡宽度
固定订单设计对于对计算负载敏感的应用是有用的,或者对滤波器系数的数量施加限制。一个选项是在通带纹波/停止衰减的牺牲中以牺牲控制来修复过渡宽度。
考虑第30次低通FIR滤波器,通带频率为370Hz,停止频率为430Hz,并采样率为2kHz。此特定规格集有两种设计方法:平均和最小二乘。让我们为每个方法设计一个过滤器并比较结果。
N = 30;成就= 370;Fstop = 430;Fs = 2000;当省略时,% Design方法默认为equiripple描述:= designfilt ('低通道',“FilterOrder”,n,“PassbandFrequency”成就,...“StopbandFrequency”Fstop,'采样率'Fs);dls = designfilt ('低通道',“FilterOrder”,n,“PassbandFrequency”成就,...“StopbandFrequency”Fstop,'采样率',fs,'DesignMethod',“ls”);hfvt = fvtool(环保、dls);传奇(hfvt“Equiripple设计”,“最小二乘设计”)
等效纹波滤波器非常适合于必须满足特定公差的应用,例如设计具有给定最小阻带衰减或给定最大通带纹波的滤波器。另一方面,如果我们想要在通/阻带内最小化误差(理想滤波器和实际滤波器之间)的能量,这些设计可能是不理想的。
如果你想在某一频段尽可能地降低信号的能量,使用最小二乘设计。
在上面的例子中,所设计的滤波器在通带和阻带有相同的纹波。我们可以使用权值来减少其中一个波段的纹波,同时保持滤波器顺序固定。例如,如果您希望阻带波纹是通带波纹的十分之一,您必须给阻带10倍通带权重。用这个事实重新设计等效纹波滤波器。
deqw = designfilt ('低通道',“FilterOrder”,n,“PassbandFrequency”成就,...“StopbandFrequency”Fstop,'采样率',fs,...'passbandweight',1,“StopbandWeight”10);hfvt = fvtool(环保、deqw);传奇(hfvt“Equiripple设计”,带加权止带的等效纹波设计)
固定顺序,固定截止频率
您可以使用窗口设计方法设计具有固定过滤器顺序和截止频率的过滤器。
你可以使用不同的窗口来控制阻带衰减,同时保持滤波器顺序不变。
例如,考虑一个100阶低通FIR滤波器,截止频率为60hz,采样率为1khz。比较使用汉明窗和带有90分贝旁瓣衰减的切比雪夫窗的设计结果。
汉姆= designfilt ('低通道',“FilterOrder”, 100,“CutoffFrequency”60,...'采样率',1000,'窗户','汉明');dchebwin = designfilt('低通道',“FilterOrder”, 100,“CutoffFrequency”60,...'采样率',1000,'窗户', {“chebwin”90});hfvt = fvtool(汉姆,dchebwin);传奇(hfvt'汉明窗',“切比雪夫窗口”)
还有其他方法可以指定具有固定顺序的滤波器:固定截止频率、通带纹波和阻带衰减;固定过渡宽度;固定半功率(3dB)频率。
FIR滤波器的一个缺点是它们需要大的过滤器顺序来满足一些设计规范。如果涟漪保持恒定,则滤波器顺序会与过渡宽度成反比。通过使用反馈,可以满足具有较小滤波器顺序的一组设计规范。这是IIR过滤器设计背后的想法。术语“无限脉冲响应”(IIR)源于这样的事实,即当将脉冲施加到滤波器时,输出从未衰减到零。
当计算资源稀缺时,IIR过滤器非常有用。然而,稳定的因果IIR过滤器不可能有完美的线性阶段。在要求相位线性的情况下,避免IIR设计。
使用IIR滤波器的另一个重要原因是它们相对于FIR滤波器的组延迟较小,这导致了更短的瞬态响应。
巴特沃斯滤波器
巴特沃斯滤波器是最平坦的IIR滤波器。通带和阻带的平整度使得过渡带非常宽。为了获得过渡宽度较窄的滤波器,需要大的阶数。
设计通带频率100hz,阻带频率300hz,最大通带纹波1db,阻带衰减60db的最小阶巴特沃斯滤波器。采样率为2khz。
Fp = 100;置= 300;美联社= 1;Ast = 60;Fs = 2 e3;但= designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,'采样率',fs,'DesignMethod',“黄油”);
契比雪夫I型滤波器
切比雪夫I型滤波器由于允许通带纹波而获得比同阶巴特沃斯滤波器更小的过渡宽度。
巴特沃斯和切比雪夫I型滤波器都具有最大平阻带。对于给定的滤波器顺序,在通带纹波和过渡宽度之间进行权衡。
设计一个切比雪夫I型滤波器与巴特沃斯滤波器相同的规格以上。
dcheby1 = designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,'采样率',fs,'DesignMethod','chebby1');
切比雪夫II型滤波器
切比雪夫II型滤波器具有最大平坦通带和等纹波阻带。
由于通常不需要非常大的衰减,我们可以通过允许一些阻带纹波,用相对较小的阶数来获得所需的过渡宽度。
设计一个最小阶切比雪夫II型滤波器,与前面示例中的相同规格。
dcheby2 = designfilt(“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,'采样率',fs,'DesignMethod','chebby2');
椭圆滤清器
椭圆滤波器是切比雪夫和巴特沃斯滤波器的推广,它允许通带和阻带产生波纹。当波纹变小时,椭圆滤波器可以任意接近切比雪夫滤波器或巴特沃斯滤波器的幅值和相位响应。
椭圆滤波器以最小的阶数达到给定的过渡宽度。
dellip = designfilt(“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,'采样率',fs,'DesignMethod',“ellip”);
比较四个IIR滤波器的响应和阶数。
对于相同的规范约束,Butterworth方法得到最高阶,椭圆方法得到最小阶。
FilterOrders = [filtord(dbutter) filtord(dcheby1) filtord(dcheby2) filtord(dellip)]
FilterOrders =1×47 5 5 4
hfvt = fvtool(但dcheby1、dcheby2 dellip);轴([0 1e3 -80 2]);传奇(hfvt“巴特沃斯”,“切比雪夫型”,...'Chebyshev type II',“椭圆”)
放大通频带,查看波纹差异。
轴([0 150-3 2]);
符合通带或停车规范
使用最小订单设计,理想的顺序需要舍入到下一个整数。此额外的分数允许算法实际超过规格。
使用“MatchExactly”
参数限制设计算法以确切地匹配一个频段。另一个频段超过其规范。
默认情况下,Chebyshev Type I设计匹配通带,Butterworth和Chebyshev Type II匹配阻带,椭圆设计匹配通带和阻带(当超过阻带边缘频率时):
dellip1 = designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,'采样率',fs,'DesignMethod',“ellip”,...“MatchExactly”,“通频带”);dellip2 = designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,'采样率',fs,'DesignMethod',“ellip”,...“MatchExactly”,阻带的);hft = fvtool(dellip, dellip1, dellip2);传奇(hfvt'匹配通带和阻带',“通频带匹配”,...匹配的阻带的);轴([0 1e3 -80 2]);
匹配通带和匹配的两个设计在通带频率值为100 Hz时具有精确为1 dB的纹波。
群时延比较
使用IIR过滤器,我们不需要考虑纹波/转换宽度权衡,而且需要考虑相位失真的程度。我们知道在整个奈奎斯特间隔内都不可能有线性阶段。因此,我们可能希望看到阶段响应的线性多远。这样做的好方法是看看(理想的常数)组延迟,看看它是如何平整的。
比较上述四种IIR滤波器的组延迟。
如果相位是一个问题,请记住Butterworth和Chebyshev II型设计具有最平坦的组延迟,从而引入最小的失真。
hfvt = fvtool(dbutter,dcheby1,dcheby2,dellip,“分析”,“grpdelay”);传奇(hfvt“巴特沃斯”,“切比雪夫型”,...'Chebyshev type II',“椭圆”)
在这个例子中,您学会了如何使用designfilt
以获得具有不同约束条件和设计方法的各种低通FIR和IIR滤波器。designfilt
也可用于获得高通,带通,带柄,任意幅度,差异化器和希尔伯特设计。看看滤波器设计画廊示例和文档以了解有关所有可用选项的更多信息。
有关滤波器设计和分析的更多信息,请参阅Signal Processing Toolbox®软件文档。有关过滤器应用程序的更多信息,请参见数字滤波实用导论的例子。