数字滤波器设计实用导论

此示例说明如何使用。来设计基于频率响应规范的FIR和IIR滤波器designfilt功能在信号处理Toolbox®产物。上的低通滤波器的实施例的浓缩物,但大多数的结果适用于其他反应类型以及。

这个例子集中在数字滤波器的设计,而不是对他们的应用程序。如果您想了解更多关于数字滤波器的应用看数字滤波的实用介绍例。

数字滤波器设计

低通滤波器的规范

理想的低通滤波器是一个叶不变低于指定的截止频率的信号的所有频率分量, ω 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。

Fpass = 0.37;FSTOP = 0.43;AP = 1;AST = 30;d = designfilt('lowpassfir','PassbandFrequency',Fpass,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,'StopbandAttenuation',AST);hfvt = fvtool(d);

将所得的滤波器的阶数可以使用查询filtord功能。

N = filtord(d)
N = 39

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

信息(d)
ANS =17x44 char数组“FIR数字滤波器(真正的)”“-------------------------”“过滤器长度:40”'稳定:是的“线性相位:是(2型)“”“‘的设计方法信息’‘设计算法:等波纹’”“‘的设计规格’‘采样率:N / A(归一化频率)’‘响应:低通’”规格:Fp的,的Fst,鸭,AST '通带边缘:0.37'' 阻带安泰信。:30分贝'‘通带纹波:1分贝’‘阻带边缘:0.43’
  • designfilt函数默认选择等波纹设计算法。线性相位等波纹滤波器是理想的,因为对于给定的阶数,它们与理想滤波器的最大偏差可能最小。

但是请注意,还可以使用Kaiser窗获得的最低阶的设计。尽管Kaiser窗方法产生了相同规格较大的滤波器阶数,算法较少计算成本,并不太可能有收敛问题时,设计规范非常严格。如果应用程序需要非常窄的过渡宽度或一个非常大的阻带衰减可能发生这种情况。

使用Kaiser window方法设计与上述规格相同的滤波器,并将其响应与等波纹滤波器进行比较。

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

N = filtord (dk)
N = 52

指定频率参数(赫兹)

如果你知道该过滤器将操作的采样率,您可以指定采样率,以赫兹的频率。重新设计的最小阶等波纹滤波器为2kHz的采样率。

Fpass = 370;FSTOP = 430;AP = 1;AST = 30;FS = 2000;d = designfilt('lowpassfir','PassbandFrequency',Fpass,...“StopbandFrequency”Fstop,“PassbandRipple”据美联社,,...'StopbandAttenuation'Ast,'采样率',FS);hfvt = fvtool(d);

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

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

考虑具有370赫兹,430赫兹的阻带频率,和2 kHz的采样率的通带频率的30阶低通FIR滤波器。这有特定的一套规范两种设计方法可供选择:等波纹和最小二乘法。让我们设计的每个方法一个过滤器,并比较结果。

N = 30;Fpass = 370;FSTOP = 430;FS = 2000;省略当%设计方法默认为“等波纹”DEQ = designfilt('lowpassfir',“FilterOrder”,N,'PassbandFrequency',Fpass,...“StopbandFrequency”Fstop,'采样率',FS);DLS = designfilt('lowpassfir',“FilterOrder”,N,'PassbandFrequency',Fpass,...“StopbandFrequency”Fstop,'采样率',FS,'DesignMethod','LS');hfvt = fvtool(环保、dls);传奇(hfvt“Equiripple设计”,“最小二乘设计”)

等波纹过滤器非常适合应用在特定的公差必须得到满足,如设计有一定的最低阻带衰减或给定的最大通带波纹的过滤器。在另一方面,如果我们希望尽量减少误差在通带/阻带(理想与实际滤波器之间)的能量,这些设计可能不理想。

  • 如果你想减少信号的能量尽可能多地在一定的频段,采用最小二乘设计。

在上面的例子中,设计的滤波器在通带和阻带有相同的纹波。我们可以使用加权来减少其中一个波段的纹波,同时保持滤波器的阶数不变。例如,如果你希望阻带波纹是通带的十分之一,你必须给阻带十倍通带的重量。利用这个事实重新设计等波纹滤波器。

deqw = designfilt('lowpassfir',“FilterOrder”,N,'PassbandFrequency',Fpass,...“StopbandFrequency”Fstop,'采样率',FS,...'PassbandWeight'1,'StopbandWeight',10);hfvt = fvtool(DEQ,deqw);传奇(hfvt“Equiripple设计”,“等波纹设计加权阻带”)

固定顺序,固定截止频率

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

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

例如,考虑一个100阶低通以60Hz的截止频率和1kHz的采样速率FIR滤波器。对比设计,结果使用汉明窗,并与旁瓣衰减90 dB的Chebyshev窗。

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

有些情况下,你可以指定固定的顺序过滤其他方式:固定的截止频率,通带纹波和阻带衰减;固定过渡宽度;和固定半功率(3分贝)频率。

IIR滤波器的设计

一个FIR滤波器的缺点之一是,他们需要大量的过滤器,以满足一些设计规范。如果波纹保持恒定,滤波器的阶数的增长成反比过渡宽度。通过使用反馈,可满足一家集设计规范与一个小得多的滤波器阶。这背后是IIR滤波器的设计理念。术语“无限脉冲响应”(IIR)从的是,当一个脉冲被施加到过滤器中,输出永远不会衰减到零的事实造成的。

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

使用IIR滤波器的另一重要原因是它们相对于FIR滤波器小群延迟,其结果在较短的瞬态响应。

巴特沃斯滤波器

巴特沃斯滤波器是最平坦的IIR滤波器。在通带和阻带的平坦度会导致过渡频带是非常宽的。大订单需要获得窄过渡宽度过滤器。

设计的最小阶巴特沃斯滤波器的通带频率100Hz时,阻带频率300赫兹,最大通带波纹1分贝,和60分贝阻带衰减。采样速率为2kHz。

FP = 100;FST = 300;AP = 1;AST = 60;FS = 2E3;dbutter = designfilt('lowpassiir','PassbandFrequency'《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...'StopbandAttenuation'Ast,'采样率',FS,'DesignMethod','牛油');

Chebyshev类型I过滤器

通过允许通带纹波,契比雪夫I型滤波器比同等阶的巴特沃斯滤波器的过渡宽度更小。

  • 巴特沃斯和切比雪夫I型滤波器都有最大的平坦阻带。对于给定的滤波器阶,折衷是通带纹波和过渡宽度之间的折衷。

设计一个切比雪夫型滤波器与同样规格的巴特沃斯滤波器以上。

dcheby1 = designfilt('lowpassiir','PassbandFrequency'《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...'StopbandAttenuation'Ast,'采样率',FS,'DesignMethod','cheby1');

切比雪夫II型过滤器

  • 切比雪夫II型滤波器具有最平坦的通带和阻带等波纹。

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

设计与同规格最低阶Chebyshev II型滤波器作为在前面的例子。

dcheby2 = designfilt('lowpassiir','PassbandFrequency'《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...'StopbandAttenuation'Ast,'采样率',FS,'DesignMethod','cheby2');

椭圆滤波器

椭圆滤波器泛化了切比雪夫滤波器和巴特沃斯滤波器,它允许通带和阻带的波纹。当波纹变得更小时,椭圆滤波器可以任意接近切比雪夫滤波器或巴特沃思滤波器的幅值和相位响应。

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

dellip = designfilt('lowpassiir','PassbandFrequency'《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...'StopbandAttenuation'Ast,'采样率',FS,'DesignMethod',“椭球”);

比较四个IIR过滤器的响应和顺序。

  • 出于同样的规格的限制,巴特沃思方法产生最高顺序和椭圆方法产生最小。

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“北海”,“切比雪夫I型”,...“切比雪夫II型”,“椭圆”)

放大到通带看纹波差异。

轴([0 150 -3 2]);

精确匹配的通带阻带或规格

随着最低阶的设计,理想的订单需要四舍五入到下一个整数。这种额外的分数阶允许算法实际上超过了规范。

  • 使用'MatchExactly'参数来约束设计算法,一个带完全匹配。其他频带超过其规范。

默认情况下,切比雪夫I型设计符合通,巴特沃斯和切比雪夫II型匹配的阻带和椭圆形设计既通带和阻带(而超出阻带边缘频率)匹配:

dellip1 = designfilt ('lowpassiir','PassbandFrequency'《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...'StopbandAttenuation'Ast,'采样率',FS,'DesignMethod',“椭球”,...'MatchExactly',“通频带”);dellip2 = designfilt ('lowpassiir','PassbandFrequency'《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,...'StopbandAttenuation'Ast,'采样率',FS,'DesignMethod',“椭球”,...'MatchExactly',“阻带”);hfvt = fvtool(dellip, dellip1, dellip2);传奇(hfvt“匹配的通带和阻带”,“匹配通”,...“匹配阻带”);轴([0 1e3 -80 2]);

匹配的通带和匹配-都设计具有以100Hz的通带频率值的正好1 dB的纹波。

群时延比较

随着IIR滤波器,我们需要考虑的不仅仅是纹波/过渡宽度权衡,而且相位失真的程度。我们知道,这是不可能有整个奈奎斯特区间的线性相位。因此,我们可能希望看到从线性相位响应多远。一个好办法做到这一点是看的(理想常数)群延迟,看看它是如何平。

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

  • 如果相位是一个问题,请记住,巴特沃斯和切比雪夫Ⅱ型设计,具有最平坦的群延迟,从而引入至少失真。

hfvt = fvtool(dbutter,dcheby1,dcheby2,dellip,'分析','grpdelay');传奇(hfvt“北海”,“切比雪夫I型”,...“切比雪夫II型”,“椭圆”)

结论

在这个例子中,你学会了如何使用designfilt以获得各种具有不同的限制和设计方法低通FIR和IIR滤波器。designfilt也可用于获得高通,带通,带阻的,任意大小,微分器,和希尔伯特设计。查看滤波器设计画廊示例和文档,以了解所有可用选项的更多信息。

延伸阅读

有关滤波器设计和分析的更多信息,请参阅信号处理工具箱®软件文档。有关筛选器应用程序的更多信息,请参见数字滤波的实用介绍例。