主要内容

数字滤波器设计实用介绍

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

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

数字滤波器设计

低通滤波器的规范

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

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

  • 实际的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”“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,“StopbandAttenuation”, Ast);hfvt = fvtool (d);

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

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

N = filtord (d)
N = 39

你可以使用信息函数获取用于设计过滤器的参数的信息

信息(d)
ans =17 x44 char数组FIR数字滤波器(实数)' '------------------------- ' ' 滤波器长度:40‘稳定:是的“线性相位:是的(2型)信息' ' ' ' ' '设计方法设计算法:Equiripple ' ' ' '设计规范“采样率:N / A(归一化频率)的反应:低通“规范:Fp,置,美联社,Ast的通频带边缘:0.37“阻带边缘:0.43“通带波纹:1 dB的阻带衰减器。: 30db '
  • designfilt函数默认选择equiripple设计算法。线性相位等纹波滤波器是理想的,因为对于给定的阶数,它们与理想滤波器的最大可能偏差最小。

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

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

dk = designfilt (“lowpassfir”“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“DesignMethod”“kaiserwin”);addfilter (hfvt dk);传奇(hfvt“Equiripple设计”Kaiser窗设计的

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含3个类型为line的对象。这些对象代表Equiripple设计,Kaiser窗户设计。

N = filtord (dk)
N = 52

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

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

成就= 370;Fstop = 430;美联社= 1;Ast = 30;Fs = 2000;d = designfilt (“lowpassfir”“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...“StopbandAttenuation”Ast,“SampleRate”Fs);hfvt = fvtool (d);

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

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

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

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

N = 30;成就= 370;Fstop = 430;Fs = 2000;当省略时,% Design方法默认为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设计”“最小二乘设计”

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含3个类型为line的对象。这些对象代表Equiripple设计,最小二乘设计。

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

  • 如果你想在某一频段尽可能地降低信号的能量,使用最小二乘设计。

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

deqw = designfilt (“lowpassfir”“FilterOrder”N“PassbandFrequency”成就,...“StopbandFrequency”Fstop,“SampleRate”Fs,...“PassbandWeight”, 1“StopbandWeight”10);hfvt = fvtool(环保、deqw);传奇(hfvt“Equiripple设计”带加权止带的等效纹波设计

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含3个类型为line的对象。这些对象代表Equiripple设计,带加权阻带的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“汉明窗”“切比雪夫窗口”

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

还有其他方法可以指定具有固定顺序的滤波器:固定截止频率、通带纹波和阻带衰减;固定过渡宽度;固定半功率(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]);传奇(hfvt“巴特沃斯”“切比雪夫型”...“切比雪夫II型”“椭圆”

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

放大通频带,查看波纹差异。

轴([0 150 -3 2]);

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

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

对于最小序设计,理想的顺序需要四舍五入到下一个整数。这个额外的分数阶允许算法实际超出规范。

  • 使用“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”阻带的);hft = fvtool(dellip, dellip1, dellip2);传奇(hfvt'匹配通带和阻带'“通频带匹配”...匹配的阻带的);轴([0 1e3 -80 2]);

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

匹配通频带和匹配通频带两种设计在通频带频率为100hz时的纹波正好为1db。

群时延比较

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

比较上述四种IIR滤波器的组延迟。

  • 如果相位是一个问题,请记住Butterworth和Chebyshev II型设计具有最平坦的组延迟,从而引入最小的失真。

hfvt = fvtool(但dcheby1、dcheby2 dellip,“分析”“grpdelay”);传奇(hfvt“巴特沃斯”“切比雪夫型”...“切比雪夫II型”“椭圆”

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

结论

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

进一步的阅读

有关滤波器设计和分析的更多信息,请参阅Signal Processing Toolbox®软件文档。有关过滤器应用程序的更多信息,请参阅数字滤波实用导论

另请参阅

||