数字滤波器设计实用导论“,
这个例子展示了如何基于频率响应规范设计FIR和IIR滤波器designfilt
信号处理工具箱®产品的功能。该示例集中于低通滤波器,但大多数结果也适用于其他响应类型。
这个例子关注的是数字滤波器的设计,而不是它们的应用。如果您想了解更多关于数字滤波器的应用,请参阅数字滤波实用介绍“,.
数字滤波器设计
低通滤波器的规范
理想的低通滤波器是将信号的所有频率分量保持在指定的截止频率以下, ,并拒绝上述所有组件 .由于实现理想低通滤波器所需的脉冲响应是无限长的,因此不可能设计出理想的FIR低通滤波器。理想脉冲响应的有限长度近似导致通带( )和阻带( ),以及通带和阻带之间的非零过渡宽度。
当近似于有限脉冲响应时,通带/阻带波纹和过渡宽度都是理想低通滤波器响应中不需要但不可避免的偏差。这些偏差如下图所示:
实用的FIR设计通常由具有过渡宽度和最大通带和阻带波纹不超过允定值的滤波器组成。除了这些设计规范外,还必须选择滤波器的顺序,或等效地,截断脉冲响应的长度。
在滤波器设计中,设计规范的一个有用的比喻是把每个规范看作下图中三角形中的一个角。
三角形用于理解在选择设计规范时可用的自由度。因为角度的和是固定的,所以一个人最多只能选择两个规格的值。第三个规格将由特定的设计算法决定。此外,就像三角形中的角一样,如果我们使其中一个规格变大/变小,它将影响另一个或两个规格。
FIR滤波器非常吸引人,因为它们固有的稳定性,可以设计成线性相位。尽管如此,这些滤波器可能有很长的瞬态响应,在某些应用中可能证明计算成本很高。
最小订单冷杉设计
最小阶设计通过指定通带和阻带频率以及通带波纹和阻带衰减得到。设计算法选择符合规范的最小滤波器长度。
设计一个最小阶低通FIR滤波器,通带频率为0.37*pi rad/样本,阻带频率为0.43*pi rad/样本(因此过渡宽度为0.06*pi rad/样本),通带波纹为1 dB,阻带衰减为30 dB。
成就= 0.37;Fstop = 0.43;美联社= 1;Ast = 30;d = designfilt (“lowpassfir”,“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,“StopbandAttenuation”, Ast);hfvt = fvtool (d);
方法可以查询得到的筛选器顺序filtord
函数。
N = filtord (d)
N = 39
您可以使用信息
函数获取有关用于设计过滤器的参数的信息
信息(d)
ans =16 x32 char数组FIR数字滤波器(实)' '------------------------- ' ' 滤波器长度:40‘稳定:是的“线性相位:是的(2型)' ' ' '设计方法信息' '设计算法:等值纹波' ' ' '设计规范' '采样率:2(归一化)' '响应:低通' '通带纹波:1 dB ' '止带注意。: 30 dB ' '通带边缘:0.37 ' '止带边缘:0.43 '
的
designfilt
函数默认选择等纹波设计算法。线性相位等纹波滤波器是可取的,因为对于给定的顺序,它们与理想滤波器有最小的可能的最大偏差。
然而,请注意,最小序设计也可以使用凯泽窗口获得。即使Kaiser窗方法在相同的规格下产生更大的滤波顺序,当设计规格非常严格时,该算法计算成本更低,也不太可能有收敛问题。如果应用程序需要非常窄的过渡宽度或非常大的阻带衰减,就可能发生这种情况。
使用Kaiser窗法设计一个具有相同规格的滤波器,并将其响应与等纹波滤波器进行比较。
dk = designfilt (“lowpassfir”,“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“DesignMethod”,“kaiserwin”);addfilter (hfvt dk);传奇(hfvt“Equiripple设计”,Kaiser窗设计的)
N = filtord (dk)
N = 52
指定频率参数,单位为赫兹
如果知道滤波器工作时的采样速率,就可以指定采样速率和频率(以赫兹为单位)。重新设计了采样率为2khz的最小阶等纹波滤波器。
成就= 370;Fstop = 430;美联社= 1;Ast = 30;Fs = 2000;d = designfilt (“lowpassfir”,“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“SampleRate”Fs);hfvt = fvtool (d);
固定顺序,固定过渡宽度
固定顺序设计对于对计算负载敏感或对滤波器系数数量有限制的应用程序很有用。一种选择是固定过渡宽度,以控制通带波纹/阻带衰减为代价。
考虑一个30阶低通FIR滤波器,其通频带频率为370 Hz,阻频带频率为430 Hz,采样率为2khz。有两种设计方法可用于这一特定规格:等纹波和最小二乘。让我们为每种方法设计一个过滤器并比较结果。
N = 30;成就= 370;Fstop = 430;Fs = 2000;省略时,设计方法默认为'equiripple'描述:= designfilt (“lowpassfir”,“FilterOrder”N“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“SampleRate”Fs);dls = designfilt (“lowpassfir”,“FilterOrder”N“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“SampleRate”Fs,“DesignMethod”,“ls”);hfvt = fvtool(环保、dls);传奇(hfvt“Equiripple设计”,“最小二乘设计”)
等纹波滤波器非常适合于必须满足特定公差的应用,例如设计具有给定最小阻带衰减或给定最大通带波纹的滤波器。另一方面,如果我们想要最小化通带/阻带中的误差能量(介于理想和实际滤波器之间),这些设计可能是不可取的。
如果你想在某一频段尽可能地减少信号的能量,可以使用最小二乘设计。
在上面的例子中,设计的滤波器在通带和阻带有相同的波纹。我们可以使用权重来减少其中一个波段的波纹,同时保持固定的滤波器顺序。例如,如果您希望阻带波纹是通带的十分之一,则必须赋予阻带十倍的通带权重。利用这一事实重新设计等纹波滤波器。
deqw = designfilt (“lowpassfir”,“FilterOrder”N“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“SampleRate”Fs,...“PassbandWeight”, 1“StopbandWeight”10);hfvt = fvtool(环保、deqw);传奇(hfvt“Equiripple设计”,“带加权阻带的等波纹设计”)
固定顺序,固定截止频率
可以使用窗口设计方法设计具有固定滤波器顺序和截止频率的滤波器。
您可以使用不同的窗口来控制阻带衰减,同时保持滤波器顺序不变。
例如,考虑一个100阶低通FIR滤波器,截止频率为60hz,采样率为1khz。比较使用汉明窗和具有90分贝旁瓣衰减的切比雪夫窗的设计结果。
汉姆= designfilt (“lowpassfir”,“FilterOrder”, 100,“CutoffFrequency”现年60岁的...“SampleRate”, 1000,“窗口”,“汉明”);dchebwin = designfilt (“lowpassfir”,“FilterOrder”, 100,“CutoffFrequency”现年60岁的...“SampleRate”, 1000,“窗口”,{“chebwin”90});hfvt = fvtool(汉姆,dchebwin);传奇(hfvt“汉明窗”,“切比雪夫窗口”)
还有其他方法可以指定具有固定顺序的滤波器:固定截止频率、通带波纹和阻带衰减;固定过渡宽度;和固定半功率(3dB)频率。
IIR滤波器的设计
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,“SampleRate”Fs,“DesignMethod”,“黄油”);
切比雪夫I型过滤器
切比雪夫I型滤波器通过允许通带纹波,获得比同阶巴特沃思滤波器更小的过渡宽度。
巴特沃斯和切比雪夫I型滤波器都有最大平坦的阻带。对于给定的滤波器顺序,在通带波纹和过渡宽度之间进行权衡。
设计一个切比雪夫I型滤波器与上面的巴特沃斯滤波器相同的规格。
dcheby1 = designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“SampleRate”Fs,“DesignMethod”,“cheby1”);
切比雪夫II型滤波器
切比雪夫II型滤波器具有最大的平坦通带和等波纹止带。
由于通常不需要非常大的衰减,我们可以通过允许一些阻带波纹以相对较小的阶数获得所需的过渡宽度。
设计一个最小阶切比雪夫II型滤波器,其规格与前面的示例相同。
dcheby2 = designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“SampleRate”Fs,“DesignMethod”,“cheby2”);
椭圆滤波器
椭圆滤波器是切比雪夫和巴特沃斯滤波器的推广,它允许通带和阻带都有波纹。随着波纹的减小,椭圆滤波器可以近似任意关闭切比雪夫或巴特沃斯滤波器的幅值和相位响应。
椭圆滤波器以最小的阶数获得给定的过渡宽度。
dellip = designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“SampleRate”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]“巴特沃斯”,“切比雪夫型”,...“切比雪夫II型”,“椭圆”)
放大通带查看波纹差异。
放大(hfvt,[0 150 -3 2])
完全匹配通带或阻带规格
对于最小订单设计,理想订单需要四舍五入到下一个整数。这个额外的分数顺序允许算法实际上超过规范。
使用
“MatchExactly”
参数来约束设计算法精确匹配一个波段。另一条带子超出了规格。
默认情况下,Chebyshev Type I设计与通带匹配,Butterworth和Chebyshev Type II设计与阻带匹配,椭圆设计与通带和阻带都匹配(但超过了阻带边缘频率):
dellip1 = designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“SampleRate”Fs,“DesignMethod”,“ellip”,...“MatchExactly”,“通频带”);dellip2 = designfilt (“lowpassiir”,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“SampleRate”Fs,“DesignMethod”,“ellip”,...“MatchExactly”,阻带的);HFVT = fvtool(dellip, dellip1, dellip2);传奇(hfvt“匹配通带和止带”,“通频带匹配”,...匹配的阻带的);放大(hfvt,[0 1e3 -80 2])
匹配的通频带和匹配的两种设计在通频带频率值为100hz时,波纹正好为1db。
群时延比较
对于IIR滤波器,我们不仅需要考虑波纹/过渡宽度的权衡,还需要考虑相位失真的程度。我们知道线性相位不可能贯穿整个奈奎斯特区间。因此,我们可能想知道相响应离线性有多远。一个很好的方法是观察(理想的恒定)组延迟,看看它有多平坦。
比较上述设计的四种IIR滤波器的组延迟。
如果相位是一个问题,请记住Butterworth和Chebyshev II型设计有最平坦的群延迟,因此引入最小的失真。
hfvt = fvtool(但dcheby1、dcheby2 dellip,“分析”,“grpdelay”);传奇(hfvt“巴特沃斯”,“切比雪夫型”,...“切比雪夫II型”,“椭圆”)
结论
在本例中,您学习了如何使用designfilt
得到不同约束条件和设计方法下的各种低通FIR和IIR滤波器。designfilt
还可用于获得高通、带通、带阻、任意幅值、微分器和希尔伯特设计。要了解更多关于所有可用选项的信息,滤波器设计画廊.
进一步的阅读
有关滤波器设计和分析的更多信息,请参阅信号处理工具箱®软件文档。有关过滤器应用程序的更多信息,请参见数字滤波实用介绍“,.