主要内容

数字滤波器设计实用介绍

这个例子展示了如何基于频率响应规范设计FIR和IIR滤波器designfilt信号处理工具箱®产品中的函数。该示例集中于低通滤波器,但大多数结果也适用于其他响应类型。

这个例子着重于数字滤波器的设计,而不是它们的应用。如果您想了解更多关于数字滤波器应用的信息,请参见数字滤波实用导论

数字滤波器设计

低通滤波器的规范

理想的低通滤波器是使信号的所有频率成分不变地低于指定的截止频率, ω c ,并拒绝上述所有组件 ω c . 由于实现理想低通滤波器所需的脉冲响应是无限长的,因此不可能设计理想的FIR低通滤波器。对理想脉冲响应的有限长度近似导致在两个通带中都存在波纹( ω < ω c )和阻带( ω > ω c )过滤器,以及通带和停机之间的非零过渡宽度。

当用有限脉冲响应近似时,通带/阻带波纹和过渡宽度都是理想低通滤波器响应的不理想但不可避免的偏差。这些偏差如下图所示:

  • 实际的FIR设计通常包括具有过渡宽度和最大通带和阻带波纹不超过允许值的滤波器。除了这些设计规范之外,还必须选择滤波器的顺序,或者等效地,选择截断的脉冲响应的长度。

在过滤器设计中,设计规范的一个有用比喻是将每个规范看作下图中三角形中的一个角。

三角形用于理解选择设计规格时可用的自由度。因为角度的和是固定的,所以最多可以选择两个规格的值。第三个规范将由特定的设计算法决定。此外,就像三角形的角度一样,如果我们使其中一个规格变大/变小,它将影响另一个或两个规格。

FIR滤波器是非常吸引人的,因为它们固有的稳定性和可以被设计成线性相位。尽管如此,这些滤波器可以有很长的瞬态响应,在某些应用程序中可能会证明计算代价昂贵。

最小订单FIR设计

通过指定通带和阻带频率以及通带纹波和停滞衰减来获得最小顺序设计。然后,设计算法选择符合规格的最小滤波器长度。

设计一个最小阶低通FIR滤波器,通带频率为0.37*pi rad/sample,阻带频率为0.43*pi rad/sample(因此过渡宽度为0.06*pi rad/sample),通带纹波为1 dB,阻带衰减为30 dB。

成就= 0.37;Fstop = 0.43;美联社= 1;Ast = 30;d = designfilt (“lowpassfir”“通带频率”,Fpass,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,“止损绷带”,Ast);hfvt=fvtool(d);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴包含两个类型为line的对象。

的结果筛选器顺序可以查询filtord函数。

N=过滤器(d)
n = 39.

你可以使用信息获取有关用于设计过滤器的参数的信息的功能

信息(D)
ANS =.17x44 char array.FIR数字滤波器(实数)' '------------------------- ' ' 滤波器长度:40‘稳定:是的“线性相位:是的(2型)' ' ' '设计方法信息' '设计算法:Equiripple ' ' ' '设计规格' '采样率:无/A(标准化频率)' '响应:低通' '规格:Fp,Fst,Ap,Ast ' '通频带纹波:1 dB ' ' '阻频带注意。: 30 dB ' '通带边缘:0.37 ' '阻带边缘:0.43 '
  • designfilt函数默认选择equiripple设计算法。线性相位等纹波滤波器是理想的,因为对于给定的阶数,它们与理想滤波器的最大可能偏差最小。

然而,请注意,最小订单设计也可以使用Kaiser窗口获得。尽管Kaiser窗方法在相同规格下产生更大的滤波阶数,但当设计规格非常严格时,该算法的计算成本更低,也不太可能出现收敛问题。如果应用程序需要非常窄的过渡宽度或非常大的阻带衰减,就可能发生这种情况。

用Kaiser窗法设计一个与上述相同规格的滤波器,并比较其与等纹波滤波器的响应。

dk = designfilt (“lowpassfir”“通带频率”,Fpass,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...“止损绷带”Ast,“DesignMethod”'kaiserwin');添加过滤器(hfvt,dk);图例(hfvt,“Equiripple设计”'Kaiser Window Design'

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。具有标题幅度响应(DB)的轴包含3个类型线的对象。这些对象代表平等设计,Kaiser窗口设计。

N = filtord (dk)
n = 52.

以赫兹为单位指定频率参数

如果您知道滤波器工作的采样率,可以指定采样率和频率(以赫兹为单位)。重新设计采样率为2 kHz的最小阶等波纹滤波器。

Fpass=370;Fstop=430;Ap=1;Ast=30;Fs=2000;d=designfilt(“lowpassfir”“通带频率”,Fpass,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...“止损绷带”Ast,“SampleRate”,FS);hfvt = fvtool(d);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴包含两个类型为line的对象。

固定的顺序,固定的过渡宽度

固定顺序设计对于对计算负荷敏感或对滤波器系数的数量有限制的应用程序是有用的。一种选择是以控制通带纹波/阻带衰减为代价来固定过渡宽度。

考虑一个30阶低通FIR滤波器,通频带频率为370hz,阻频带频率为430hz,采样率为2khz。有两种设计方法可用于这一特定的规格集:等波纹和最小二乘。让我们为每种方法设计一个过滤器,并比较结果。

N=30;Fpass=370;Fstop=430;Fs=2000;%省略时,设计方法默认为“等波纹”deq=设计过滤器(“lowpassfir”“FilterOrder”N“通带频率”,Fpass,...“StopbandFrequency”Fstop,“SampleRate”,FS);dls = designfilt(“lowpassfir”“FilterOrder”N“通带频率”,Fpass,...“StopbandFrequency”Fstop,“SampleRate”,fs,“DesignMethod”'是');hfvt = fvtool(环保、dls);传奇(hfvt“Equiripple设计”'最小二乘设计'

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。具有标题幅度响应(DB)的轴包含3个类型线的对象。这些对象代表平均设计,最小二乘设计。

等波纹滤波器非常适合必须满足特定公差的应用,例如设计具有给定最小阻带衰减或给定最大通带波纹的滤波器。另一方面,如果我们想要最小化通带/阻带中的误差能量(理想滤波器和实际滤波器之间),则这些设计可能不可取。

  • 如果您想在某个频带内尽可能降低信号的能量,请使用最小二乘法设计。

在上面的例子中,所设计的滤波器在通带和阻带有相同的纹波。我们可以使用权值来减少其中一个波段的纹波,同时保持滤波器顺序固定。例如,如果您希望阻带波纹是通带波纹的十分之一,您必须给阻带10倍通带权重。用这个事实重新设计等效纹波滤波器。

deqw=设计过滤器(“lowpassfir”“FilterOrder”N“通带频率”,Fpass,...“StopbandFrequency”Fstop,“SampleRate”,fs,...'passbandweight',1,“阻带重量”10);hfvt = fvtool(deq,deqw);传奇(hfvt“Equiripple设计”'平息设计加权阻带'

图形过滤器可视化工具-幅值响应(dB)包含一个轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含3个line类型的对象。这些对象表示等波纹设计、带加权阻带的等波纹设计。

固定顺序,固定截止频率

可以使用窗口设计方法设计具有固定滤波器顺序和截止频率的滤波器。

  • 你可以使用不同的窗口来控制阻带衰减,同时保持滤波器顺序不变。

例如,考虑一个100阶低通FIR滤波器,截止频率为60 Hz,采样率为1 kHz。比较使用汉明窗和切比雪夫窗产生的副瓣衰减为90 dB的设计。

dhamming = designfilt(“lowpassfir”“FilterOrder”, 100,“CutoffFrequency”,60,...“SampleRate”, 1000,“窗口”“汉明”);dchebwin = designfilt (“lowpassfir”“FilterOrder”, 100,“CutoffFrequency”,60,...“SampleRate”, 1000,“窗口”,{“chebwin”,90});hfvt = fvtool(dhamming,dchebwin);传奇(hfvt“汉明窗”“切比雪夫窗”

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。具有标题幅度响应(DB)的轴包含3个类型线的对象。这些物体代表汉明窗口Chebyshev窗口。

还有其他方式可以使用固定顺序指定过滤器:固定截止频率,通带纹波和阻带衰减;固定过渡宽度;并固定半功率(3DB)频率。

IIR滤波器的设计

FIR滤波器的缺点之一是它们需要一个大的滤波器订单来满足某些设计规格。如果波纹保持不变,则滤波阶数与过渡宽度成反比增长。通过使用反馈,可以用更小的过滤顺序来满足一组设计规范。这就是IIR过滤器设计背后的想法。术语“无限脉冲响应”(IIR)源于这样一个事实:当脉冲作用于滤波器时,输出永远不会衰减到零。

  • 当计算资源非常宝贵时,IIR过滤器非常有用。然而,稳定的因果IIR滤波器不能具有完美的线性相位。在要求相位线性的情况下,避免IIR设计。

使用IIR滤波器的另一个重要原因是,相对于FIR滤波器,IIR滤波器的群延迟较小,这会导致较短的瞬态响应。

巴特沃斯滤波器

Butterworth过滤器是最大平坦的IIR过滤器。通带和停机带中的平坦度使转变带非常宽。需要大的订单来获得具有窄过渡宽度的过滤器。

设计最小秩序的Butterworth滤波器,带通带频率100 Hz,阻带频率300Hz,最大通带纹波1 dB和60 dB阻带衰减。采样率为2 kHz。

FP = 100;FST = 300;美联社= 1;AST = 60;fs = 2e3;dbutter = designfilt(“低通”“通带频率”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“止损绷带”Ast,“SampleRate”,fs,“DesignMethod”“黄油”);

契比雪夫I型滤波器

切比雪夫I型滤波器由于允许通带纹波而获得比同阶巴特沃斯滤波器更小的过渡宽度。

  • 巴特沃斯和切比雪夫I型滤波器都具有最大平阻带。对于给定的滤波器顺序,在通带纹波和过渡宽度之间进行权衡。

设计Chebyshev I型过滤器,具有与上面的Butterworth滤波器相同的规格。

dcheby1=设计过滤器(“低通”“通带频率”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“止损绷带”Ast,“SampleRate”,fs,“DesignMethod”“cheby1”);

Chebyshev Type II滤波器

  • Chebyshev II型滤波器具有最大扁平通带和平等的阻带。

由于通常不需要非常大的衰减,我们可以通过允许一些阻带纹波,用相对较小的阶数来获得所需的过渡宽度。

设计一个最小阶切比雪夫II型滤波器,其规格与前面示例中的规格相同。

dcheby2 = designfilt(“低通”“通带频率”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“止损绷带”Ast,“SampleRate”,fs,“DesignMethod”“cheby2”);

椭圆滤波器

椭圆滤波器是切比雪夫和巴特沃斯滤波器的推广,它允许通带和阻带产生波纹。当波纹变小时,椭圆滤波器可以任意接近切比雪夫滤波器或巴特沃斯滤波器的幅值和相位响应。

  • 椭圆滤波器以最小的阶数达到给定的过渡宽度。

dellip = designfilt(“低通”“通带频率”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“止损绷带”Ast,“SampleRate”,fs,“DesignMethod”“埃利普”);

比较四个IIR滤波器的响应和阶数。

  • 对于相同的规格约束,Butterworth方法产生最高阶数,椭圆法产生最小的阶数。

过滤器= [filtort(dbutter)filtort(dcheby1)filtord(dcheby2)filtort(dellip)]
FilterOrders =1×47 5 5 4
hfvt = fvtool(但dcheby1、dcheby2 dellip);轴([0 1e3 -80 2]);传奇(hfvt'Butterworth''chebyshev type i'...“切比雪夫II型”“椭圆”

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴包含5个类型为line的对象。这些物体代表巴特沃斯,切比雪夫型,切比雪夫型,椭圆型。

缩放到通带以查看纹波差异。

轴([0 150-3 2]);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴包含5个类型为line的对象。这些物体代表巴特沃斯,切比雪夫型,切比雪夫型,椭圆型。

与通带或阻带规格完全匹配

具有最小订单设计,理想的顺序需要舍入到下一个整数。此额外的分数顺序允许算法实际超过规格。

  • 使用“完全匹配”参数来限制设计算法匹配一个频段。另一个频段超过其规格。

缺省情况下,Chebyshev类型I设计匹配通带,Butterworth和Chebyshev Type II匹配的匹配停机带和椭圆设计匹配通带和停机带(超出停机边缘频率时):

dellip1 = designfilt (“低通”“通带频率”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“止损绷带”Ast,“SampleRate”,fs,“DesignMethod”“埃利普”...“完全匹配”“通频带”);dellip2 = designfilt (“低通”“通带频率”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...“止损绷带”Ast,“SampleRate”,fs,“DesignMethod”“埃利普”...“完全匹配”“阻带”);hft = fvtool(dellip, dellip1, dellip2);传奇(hfvt“匹配通带和阻带”“匹配通带”...'匹配的钢筋'); 轴([0 1e3-80 2]);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴包含4个类型为line的对象。这些对象表示“匹配通带”和“阻带”、“匹配通带”、“匹配阻带”。

匹配通带和匹配的两个设计在100 Hz的通带频率值下具有恰好1 dB的纹波。

组延迟比较

对于IIR滤波器,我们不仅需要考虑纹波/过渡宽度的权衡,还需要考虑相位失真的程度。我们知道在整个奈奎斯特区间内不可能有线性相位。因此,我们可能想看看相位响应离线性有多远。这样做的一个好方法是观察(理想的常量)组延迟,看看它有多平坦。

比较上面设计的四个IIR滤波器的群延迟。

  • 如果阶段是一个问题,请记住,TATTWORTH和CHEBYSHEV II型设计具有拼凑的组延迟,从而引入最小失真。

hfvt = fvtool(dbutter,dcheby1,dcheby2,dellip,“分析”“grpdelay”);图例(hfvt,'Butterworth''chebyshev type i'...“切比雪夫II型”“椭圆”

图形过滤可视化工具-组延迟包含一个轴和其他类型的uitoolbar, uimenu对象。具有标题组延迟的轴包含4个类型为line的对象。这些物体代表巴特沃斯,切比雪夫型,切比雪夫型,椭圆型。

结论

在这个例子中,您学会了如何使用designfilt获得各种具有不同约束条件和设计方法的低通FIR和IIR滤波器。designfilt也可用于获得高通,带通,带柄,任意幅度,差异化器和希尔伯特设计。要了解有关所有可用选项的更多信息,滤波器设计画廊

进一步的阅读

有关过滤器设计和分析的更多信息,请参阅信号处理工具箱软件文档。有关过滤器应用的更多信息,请参阅数字滤波实用导论

另请参阅

||