FIR数字滤波器设计

FIR与IIR滤波器

具有有限持续时间脉冲响应(全零,或FIR滤波器)数字滤波器都具有优点和缺点相比无限脉冲响应(IIR)滤波器。

FIR滤波器具有以下主要优点:

  • 他们可以有完全相同线性相位。

  • 它们总是稳定的。

  • 该设计方法是大致线性的。

  • 它们可以在硬件上有效地实现。

  • 该过滤器启动瞬态具有持续时间有限。

FIR滤波器的主要缺点是它们通常需要比IIR滤波器高得多的滤波器阶数才能达到给定的性能水平。相应地,这些滤波器的延迟常常比性能相同时大得多IIR滤波器。

FIR滤波器摘要

FIR滤波器

滤波器设计方法

描述

过滤功能

应用窗口截短逆傅立叶指定“砖墙”过滤器的变换

fir1,的故事,kaiserord

带过渡带的多频带

等波纹或最小二乘法在频率范围内的子带

firls,firpm,firpmord

约束最小二乘

在最大误差约束下最小化整个频率范围内的平方积分误差

fircls,fircls1

任意的响应

任意响应,包括非线性相位和复杂滤波器

cfirpm

升余弦

具有平滑的,正弦的过渡响应的低通

rcosdesign

线性相位滤波器

除了cfirpm,所有的FIR滤波器设计函数只设计线性相位滤波器。的滤波器系数,或者这种滤波器的“抽头”服从或者偶数或奇对称关系。根据这种对称性,以及是否顺序n所述过滤器的是偶数还是奇数,一个线性相位滤波器(存储在长度n+ 1的向量b)有一定的内在限制频率响应。

线性相位滤波器类型 滤波器阶 对称系数 响应H(F)中,f=0 响应H(F)中,f=1(奈奎斯特)

I型

甚至

甚至:

b ( k ) = b ( n + 2 k ) , k = 1 , ... , n + 1

没有限制

没有限制

II型

甚至:

b ( k ) = b ( n + 2 k ) , k = 1 , ... , n + 1

没有限制

H(1)=0

类型III

甚至

奇:

b ( k ) = b ( n + 2 k ) , k = 1 , ... , n + 1

H(0)=0

H(1)=0

IV型

奇:

b ( k ) = b ( n + 2 k ) , k = 1 , ... , n + 1

H(0)=0

没有限制

相位延迟和线性相位FIR滤波器群延迟是相等的,并恒定在所述频带。对于订单n线性相位FIR滤波器,群延迟是n/2,滤波后的信号被简单地延迟n/ 2的时间步长(及其傅立叶的变换大小由过滤器的幅度响应缩放)。此属性保留的在通带中的信号的波形;即,没有相位失真。

的函数fir1,的故事,firls,firpm,fircls,fircls1所有的设计I型和默认II线性相位FIR滤波器。rcosdesign设计只有I型过滤器。都firlsfirpm设计型III和IV的线性相位FIR滤波器给出一个“希尔伯特”“区别”旗。cfirpm可以设计任何类型的线性相位滤波器,和非线性相位滤波器的为好。

请注意

由于II型滤波器在奈奎斯特频率(“高”频率)处的频率响应为零,fir1不设计II型高通和带阻滤波器。对奇值n在这些情况下,fir1向订单中添加1并返回类型I筛选器。

窗方法

考虑理想,或“砖墙”,数字低通滤波器的截止频率ω0弧度/秒。该过滤器具有幅度在1级与所有频率小于ω0,并在与ω之间的大小的频率大小00和π。它的脉冲响应序列h(n)是

h ( n ) = 1 2 π π π H ( ω ) e j ω n d ω = 1 2 π ω 0 ω 0 e j ω n d ω = ω 0 n π n

因为脉冲响应是无限的,非因果该过滤器是无法实施的。为了创建一个有限持续时间脉冲响应,通过应用一个窗口截断它。通过保持在该截断脉冲响应的中心部分,则获得的线性相位FIR滤波器。例如,一个长度51与过滤器的低通截止频率ω00.4πrad / s

B = 0.4 *正弦(0.4 *( -  25:25));

这里采用的窗口是一个简单的矩形窗口。通过Parseval定理,这是长51滤波器最佳地接近理想的低通滤波器,在综合最小二乘感。下面的命令显示FVTool滤波器的频率响应:

fvtool(B,1)

请注意,y在下面的图中所示轴是幅度平方。您可以通过右键单击轴标签并选择在此设置大小的平方从菜单中。

振荡和脉动发生在响应,特别是靠近带边。这种“吉布斯效应”不会消失作为过滤器长度的增加,但一个非矩形窗口减少了它的幅度。乘以在时域中的窗口会导致在频域中的卷积或平滑。适用的长度51汉明窗的滤波器并显示使用FVTool结果:

B = 0.4 *正弦(0.4 *( -  25:25));B = B *汉明(51)';fvtool(B,1)

请注意,y在下面的图中所示轴是幅度平方。您可以通过右键单击轴标签并选择在此设置大小的平方从菜单中。

使用汉明窗大大降低了振铃。这种改善是在过渡宽度为代价(视窗版需要更长的时间从通带阻带斜坡)和最优(视窗版不支持将集成方误差)。

的函数fir1的故事都是基于这个窗口过程的。给定一个滤波器的阶数和一个理想滤波器的描述,这些函数返回该理想滤波器的加窗傅里叶反变换。它们都默认使用一个汉明窗口,但是它们接受任何窗口函数。看到窗户适用于Windows和它们的属性的概述。

标准带FIR滤波器设计:FIR1

fir1实现了加窗线性相位FIR数字滤波器的经典设计方法。它类似于IIR滤波器的设计功能,因为它是为设计标准带配置的滤波器而设计的:低通、带通、高通和带阻。

该声明

n = 50;Wn = 0.4;b = fir1 (n, Wn);

创建行向量b包含订单的系数n海明窗过滤器。这是截止频率的低通,线性相位FIR滤波器WNWN是0和1,其中1个对应于奈奎斯特频率,采样频率的一半之间的一个数。(不像其他的方法,在这里WN对应于6分贝点。)对于一个高通滤波器,只需追加'高'该函数的参数列表。对于带通或带阻滤波器中,指定WN作为包含通带边缘频率的二元向量。附加“停止”对于带宽停止配置。

b = fir1 (n, n,窗口)使用列向量中指定的窗口窗口的设计。向量窗口必须n + 1元素长。如果没有指定窗口,fir1应用一个汉明窗口。

Kaiser窗口订单估计。kaiserord函数估计滤波器的阶数,截止频率,和Kaiser窗β参数需要满足一组给定的规格。给定频带边缘的矢量和的幅度,以及最大允许纹波的相应载体,kaiserord返回适当的输入参数fir1函数。

多波段FIR滤波器设计:fir2

的故事功能还设计窗口式FIR滤波器,但与任意形状的分段线性频率响应。这是相对于fir1,其中仅在设计标准的低通,高通,带通和带阻滤波器的配置。

的命令

n = 50;F = [0 0.4 0.5 1];M = [1 1 0 0];B = FIR2(N,F,M);

返回行向量bn + 1顺序的系数nFIR滤波器的频率 - 幅度特性匹配那些由矢量给定ff是频点范围从0到1,其中1表示奈奎斯特频率的矢量。中指定的点处是否有指定的幅值响应f。(该函数的IIR对方是yulewalk该方法还设计了基于任意分段线性幅值响应的滤波器。看到IIR滤波器设计了解详情。)

与过渡带多频段FIR数字滤波器设计

firlsfirpm函数提供了一种比fir1的故事功能。这些函数设计希尔伯特变压器、微分器和其他具有奇对称系数的滤波器(类型III和类型IV线性相位)。它们还允许您包含误差未最小化的转换或“不关心”区域,并执行最小化的带相关加权。

firls函数是一个扩展fir1的故事的,因为它指定的频率响应和实际频率响应之间的误差的平方的积分最小化的功能。

firpm功能实现了公园 - 麦克莱伦算法,它采用雷米兹交换算法和切比雪夫逼近理论与指定的和实际频率响应之间的最佳拟合来设计滤波器。该过滤器是在它们最小化指定的频率响应和实际频率响应之间的最大误差的意义上最佳;他们有时被称为极小过滤器。以这种方式设计滤波器表现出等波纹行为在其频率响应,并因此也被称为等波纹过滤器。公园 - 麦克莱伦FIR滤波器设计的算法也许是最流行和广泛使用的FIR滤波器设计方法。

对于语法firlsfirpm是相同的;唯一不同的是他们最小的方案。下面的例子演示如何利用过滤器的设计与firlsfirpm反映这些不同的方案。

基本配置

操作的默认模式firlsfirpm是设计I型或II型线性相位滤波器,这取决于你想要的顺序是偶数或奇数,分别。从0.5近似振幅1从0到0.4赫兹,振幅近似0的低通例如1.0赫兹是

n = 20;%滤波器阶f = [0 0.4 0.5 1];%频率频带边缘A = [1 1 0 0];%振幅B = firpm(N,F,A);

从0.4到0.5赫兹,firpm不执行任何错误最小化;这是一个过渡波段或“不关心”区域。在你关心的频带中,转换频带能最大限度地减小误差,代价是转换速率变慢。这样,这些类型的过滤器有一个固有的权衡,类似于FIR设计的窗口。

若要比较最小二乘与等波纹滤波器的设计,请使用firls创建一个类似的过滤器。类型

BB = firls(N,F,A);

并使用比较的FVTool频率响应:

fvtool (b, 1, bb, 1)

请注意,y在下面的图中所示轴是幅度平方。您可以通过右键单击轴标签并选择在此设置大小的平方从菜单中。

设计与过滤器firpm展品等波纹行为。还要注意的是,firls滤波器在大多数通带和阻带上有更好的响应,但在带边缘(f=0.4f=0.5),响应是从理想比更远firpm过滤器。这表明firpm过滤器的最大错误在通带和阻带是较小的,并且事实上,正是由于这个频带边缘配置和滤波器长度最小的可能。

把频带看作是短频率间隔上的线。firpmfirls使用此方案来表示具有任何过渡频带任何分段线性频率响应函数。firlsfirpm设计低通,高通,带通和带阻滤波器;带通例子是

F = [0 0.3 0.4 0.7 0.8 1];%在波段边缘对A = [0 0 1 1 0 0];%带通滤波器幅度

从技术上讲,这些f一个向量定义五个波段:

  • 两个阻带,从0.0到0.3和从0.8到1.0

  • 一种通带0.4〜0.7

  • 两个过渡带,0.3到0.4,0.7到0.8

例如高通滤波器和带阻滤波器

f = [0 0 7 0.8 1];%在波段边缘对a = [0 0 1 1];%高通滤波器幅度F = [0 0.3 0.4 0.5 0.8 1];%在波段边缘对A = [1 1 0 0 1 1];带阻滤波器振幅%

一个多频带带通滤波器的例子是

f = [0 0.1 0.15 0.25 0.3 0.4 0.45 0.55 0.55 0.6 0.7 0.75 0.85 0.9 1];a = [1 1 0 0 1 1 0 0 1 1 0 0 1 1];

另一种可能性是具有作为过渡区域连接与阻带通带中的线的过滤器;在广泛的过渡区这可以帮助控制“失控”幅频响应:

f = [0 0.4 0.42 0.48 0.5 1];a =[1 1 0。8 0。2 0 0];%通带,线性过渡,%阻

权重向量

firlsfirpm让你把更多或更少强调,相对于其他某些频段的误差最小。要做到这一点,指定的频率和振幅矢量以下的权重向量。用10倍的示例的低通滤波器等波纹在比通带是阻带更小的纹波

n = 20;%滤波器阶f = [0 0.4 0.5 1];%频率频带边缘A = [1 1 0 0];%振幅w = [1 10];%权向量B = firpm(N,F,A,W);

一个合法的权向量的长度总是f一个矢量;必须有每个频带只有一个重量。

反对称滤波器/希尔伯特变压器

当后面有个名为'H'希尔伯特的选项,firpmfirls设计奇对称FIR滤波器,即III型(偶阶)或IV型(奇阶)线性相位滤波器。理想的希尔伯特变压器具有这种反对称性,在整个频率范围内振幅为1。尝试以下近似希尔伯特变压器和绘图使用FVTool:

B = firpm(21,[0.05 1],[1 1],'H');%高通的希尔伯特BB = firpm(20,[0.05 0.95],[1 1],'H');%带通希尔伯特fvtool (b, 1, bb, 1)

你可以找到延迟希尔伯特变换的信号x将其通过这些过滤器。

fs = 1000;% 采样频率t = (0:1 / fs: 2) ';%第二个时间向量x =罪(2 *π* 300 * t);%300赫兹正弦波示例信号XH =过滤器(BB,1,X);x的希尔伯特变换

对应于该解析信号x是具有复杂的信号x的实部和希尔伯特变换x作为它的虚部。对于这种FIR方法(另一种选择希尔伯特,你必须延迟x按滤波一半的顺序来产生解析信号:

XD = [零(10,1);×(1:长度(X)-10)];%延迟10个样品XA = XD + J * XH;%解析信号

此方法不适用于需要非整数延迟的奇数阶过滤器。在这种情况下,希尔伯特描述的功能,希尔伯特变换,估计分析信号。另外,使用重采样函数的作用是:通过非整数采样数来延迟信号。

微分器

信号在时域内的微分等于信号的傅里叶变换乘以一个假想的斜坡函数。也就是说,要微分一个信号,需要通过一个有响应的滤波器H(ω)=jω。使用逼近理想微分器(具有延迟)firpmfirls'd'“区别”选项:

B = firpm(21,[0 1],[0 PI]'d');

对于III型过滤器,所述分化带应该停止短奈奎斯特频率的,振幅矢量必须反映该变化,以确保正确的斜率:

BB = firpm(20,[0 0.9],[0.9 0 * PI]'d');

'd'模式,firpm由1 /ω在非零振幅的频带的权重误差的最大最小化相对错误。firls权重由误差(1 /ω)2在非零振幅的频带'd'模式。

下图显示了上述与众不同的幅度响应。

fvtool(B,1,BB,1)图例(“奇秩序”,“甚至秩序”,“位置”,'最好')

约束最小二乘FIR数字滤波器设计

该约束的最小二乘法(CLS)FIR滤波器设计的功能实现的技术,使您无需显式定义的幅度响应,过渡频带设计FIR滤波器。省略过渡频段的规范的能力是在几种情况下非常有用。例如,它可能不清楚其中如果噪声和信号信息在同一频带一起出现严格定义的过渡频带应该出现。同样的,它可能是有意义的省略过渡带的规格,如果他们只出现控制的吉布斯现象出现在滤波器响应的结果。见Selesnick,郎和巴瑞斯[2]来讨论这个方法。

CLS方法不定义通带、阻带和过渡区域,而是接受截止频率(对于高通、低通、带通或带阻情况),或者接受通带和阻带边缘(对于多频带情况),对于您指定的响应。通过这种方式,CLS方法隐式而不是显式地定义了转换区域。

的CLS方法的关键特征是,它使你上定义和降低包含在幅度响应的最大允许纹波阈值。鉴于这一约束,该技术适用于最小平方误差最小化技术在过滤器的响应的频率范围,而不是通过特定的频带。误差最小化包括在理想的“砖墙”响应的不连续性的任何区域。另外一个好处是,该技术使您可以指定从吉布斯现象产生的任意小峰。

有两个工具箱函数实现了这种设计技术。

描述

函数

约束最小二乘多波段FIR滤波器设计

fircls

低通和高通线性相位滤波器的约束最小二乘滤波器设计

fircls1

有关这些函数的调用语法的详细信息,请参阅函数参考他们的参考描述。

基本的低通和高通CLS滤波器设计

CLS最基本的设计功能,fircls1,通过这个技术来设计低通和高通FIR滤波器。作为一个例子,可以考虑设计具有顺序61的脉冲响应和0.3的截止频率的滤波器(归一化)。此外,定义约束设计过程作为上限和下限:

  • 最大通带偏差从1(通带纹波)0.02。

  • 从0.008 0(阻带波纹)最大的阻带的偏差。

要使用接近这个设计问题fircls1,使用下面的命令:

N = 61;我们= 0.3;dp = 0.02;DS = 0.008;H = fircls1(N,WO,DP,DS);fvtool (h, 1)

请注意,y- 轴下面示出的是在幅度平方。您可以通过右键单击轴标签并选择在此设置大小的平方从菜单中。

多波段CLS滤波器设计

fircls使用相同的技术设计具有指定分段恒幅响应的FIR滤波器。在这种情况下,可以指定带边向量和相应的带振幅向量。此外,您可以指定每个波段的最大纹波量。

例如,假设一个过滤器调用的规范为:

  • 0 ~ 0.3(归一化):振幅0,上界0.005,下界-0.005

  • 从0.3到0.5:振幅0.5,上界0.51,下界0.49

  • 从0.5到0.7:振幅为0,上限0.03,下限-0.03

  • 从0.7到0.9:振幅1,上界1.02,下界0.98

  • 从0.9至1:0振幅,上限0.05,下限-0.05

设计一个脉冲响应阶129的CLS滤波器,满足以下规格:

N = 129;F = [0 0.3 0.5 0.7 0.9 1];A = [0 0.5 0 1 0];向上= [0.005 0.51 0.03 1.02 0.05];LO = [-0.005 0.49 -0.03 0.98 -0.05];H = fircls(N,F,A,向上,LO);fvtool (h, 1)

请注意,y- 轴下面示出的是在幅度平方。您可以通过右键单击轴标签并选择在此设置大小的平方从菜单中。

加权CLS滤波器设计

加权的CLS滤波器设计,让您设计低通或高通FIR滤波器的相对加权误差最小的每个波段。的fircls1函数使您能够为最小二乘加权函数指定通带和阻带边缘,以及一个常数k它指定阻带与通带加权的比率。

例如,考虑规格该呼叫为具有55脉冲响应顺序和0.3的截止频率的FIR滤波器(标准化)。此外,假设为0.02最大允许通带波纹和0.004最大可允许的阻带的波动。此外,增加权重要求:

  • 为0.28重量函数通带边缘(标准化)

  • 为0.32重量函数阻带边缘

  • 重量误差最小化是通频带的10倍

使用以下方法进行处理fircls1,类型

n = 55;我们= 0.3;dp = 0.02;ds = 0.004;wp = 0.28;ws = 0.32;k = 10;dp, h = fircls1 (n, ds, wp, ws, k);fvtool (h, 1)

请注意,y- 轴下面示出的是在幅度平方。您可以通过右键单击轴标签并选择在此设置大小的平方从菜单中。

Arbitrary-Response滤波器设计

cfirpm滤波器设计功能为设计具有任意复杂响应的FIR滤波器提供了一个工具。它与其他滤波器设计函数的不同之处在于如何指定滤波器的频率响应:它接受一个函数的名称,该函数返回在频率网格上计算的滤波器响应。这种能力使cfirpm一对滤波器的设计非常灵活和强大的技术。

这种设计技术可用于产生非线性相位FIR滤波器,非对称频率响应滤波器(具有复系数),或更对称滤波器具有自定义的频率响应。

该设计算法使用扩展的雷米兹交换算法优化Chebyshev(或极小极大)误差,用于初始估计。如果这种交换方法不能得到最优的滤波器,算法就会切换到一个逐渐下降的算法来完成对最优解的收敛。

多频带滤波器设计

考虑具有以下特殊的频域特性的多波段滤波器。

乐队

振幅

优化权重

[-1 -0.5]

(5 - 1)

1

[-0.4 0.3]

[2 2]

10

(+ 0.4 + 0.8)

[2 1]

5

线性相位多波段滤波器可以利用预定义的频率响应函数被设计多频带, 如下:

b = cfirpm(38, [-1 -0.5 -0.4 0.3 0.4 0.8],...{“多频带”, [5 1 2 2 2 1]}, [1 10 5]);

对于多频带滤波器的特定情况下,我们可以使用类似的语法速记滤波器设计符号firpm:

B = cfirpm(38,[ -  1 -0.5 -0.4 0.3 0.4 0.8],...[5 1 2 2 2 1],[1 10 5]);

firpm,带边缘的矢量被传递给cfirpm。该载体限定在其上执行优化的频带;请注意,有两个过渡带,从-0.5到-0.4和0.3〜0.4。

在任一种情况下,获得的频率响应和在FVTool使用线性标度作图:

fvtool(B,1)

注意,下面示出的数据的范围是(π-π)

这种多频带滤波器的滤波器响应是复杂的,这是由于在频域上的不对称性所导致的。您可以从FVTool工具栏中选择脉冲响应,如下所示。

滤波器设计,减少延迟

考虑一个半尼奎斯特截止62抽头低通滤波器的设计。如果我们指定了负偏移值的低通滤波器滤波器的设计功能,对于组延时偏移的设计明显小于对于标准线性相位的设计。这种滤波器的设计可以计算如下:

B = cfirpm(61,[0 0.5 0.55 1],{低通滤波器的-16});

将得到的幅度响应

fvtool(B,1)

y轴是幅度平方,您可以通过右键单击轴标签并选择设定大小的平方从菜单中。

滤波器的群延迟表明,偏移从已经降低N / 2N / 2-16(即,从30.514.5)。然而,现在的群延迟在通带区域不再平坦。为了创建这个图,请点击群时延响应工具栏上的按钮。

如果我们这个非线性相位滤波器比较具有群延迟的准确14.5个样本的线性相位滤波器,所得到的滤波器是2阶* 14.5,或者使用29B = cfirpm(29,[0 0.5 0.55 1], '低通'),通带和阻带纹波更大的阶29滤波器。这些比较可以帮助您决定哪个过滤器更适合于特定的应用程序。