主要内容

FIR滤波器设计

FIR和IIR滤波器

与无限长时间脉冲响应(IIR)滤波器相比,具有有限长时间脉冲响应的数字滤波器(全零,或FIR滤波器)既有优点也有缺点。

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

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

  • 它们总是稳定的。

  • 设计方法通常是线性的。

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

  • 滤波器启动瞬态有有限的持续时间。

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

FIR滤波器总结

FIR滤波器

滤波器设计方法

描述

过滤功能

窗口

应用窗口截断傅里叶反变换的指定“砖墙”滤波器

fir1的故事kaiserord

带过渡带的多波段

在频率范围的子带上采用等纹波或最小二乘方法

firlsfirpmfirpmord

约束最小二乘

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

firclsfircls1

任意的响应

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

cfirpm

提出了余弦

低通响应平滑,正弦过渡

rcosdesign

线性相位滤波器

除了cfirpm,所有FIR滤波器设计功能只设计线性相位滤波器。的滤光器的滤光系数或“锥”服从偶或奇对称关系。取决于这种对称性,以及顺序n的偶数或奇数滤波器,线性相位滤波器(储存在长度n+ 1的向量b)有一定的内在限制频率响应。

线性相位滤波器类型 过滤器订单 系数的对称性 响应H(f), f0 响应H(f), f1(奈奎斯特)

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的故事firlsfirpmfircls,fircls1所有设计I型和II型线性相位FIR滤波器默认。rcosdesign只设计I型过滤器。这两个firls而且firpm设计III型和IV型线性相位FIR滤波器希尔伯特的“区别”国旗。cfirpm可以设计任何类型的线性相位滤波器,以及非线性相位滤波器。

请注意

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

窗口的方法

考虑理想的或“砖墙”数字低通滤波器,截止频率为ω0rad / s。该滤波器在所有频率上的幅值都为1,幅值小于ω0,在ω之间的频率为00和π。它的脉冲响应序列hn)是

h n 1 2 π π π H ω e j ω n d ω 1 2 π ω 0 ω 0 e j ω n d ω ω 0 n π n

这个滤波器是不可实现的,因为它的脉冲响应是无限的和非因果的。要创建一个有限持续时间的脉冲响应,可以通过应用窗口来截断它。通过在这个截断中保留脉冲响应的中心部分,可以获得一个线性相位FIR滤波器。例如,具有低通截止频率的长度为51的滤波器ω0是0.4 π rad/s

B = 0.4*sinc(0.4*(-25:25));

这里应用的窗口是一个简单的矩形窗口。根据Parseval定理,在积分最小二乘意义下,这是最接近理想低通滤波器的长度为51的滤波器。下面的命令在FVTool中显示滤波器的频率响应:

fvtool (b, 1)

请注意y-轴在下图中显示的是量级的平方。您可以通过右键单击轴标签并选择来设置这一点大小的平方菜单上的。

在响应中会出现振铃和波纹,尤其是在带边缘附近。这种“吉布斯效应”不会随着滤波器长度的增加而消失,但非矩形窗口会减小其大小。在时域乘以一个窗口会导致频域的卷积或平滑。给过滤器添加一个长度为51的汉明窗口,并使用FVTool显示结果:

B = 0.4*sinc(0.4*(-25:25));B = B .*hamming(51)';fvtool (b, 1)

请注意y-轴在下图中显示的是量级的平方。您可以通过右键单击轴标签并选择来设置这一点大小的平方菜单上的。

使用汉明窗口可以大大减少振铃。这种改进是以转换宽度(窗口版本从通带到止带需要更长的时间)和最优性(窗口版本没有最小化积分平方误差)为代价的。

标准带FIR滤波器设计:fir1

fir1使用最小二乘近似计算滤波器系数,然后用窗口平滑脉冲响应。有关窗口及其属性的概述,请参见窗户fir1与IIR滤波器设计功能相似的是,它被制定为设计标准带配置的滤波器:低通、带通、高通和带阻。

的语句

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

创建行向量b包含顺序的系数nHamming-windowed过滤器。这是一个具有截止频率的低通线性相位FIR滤波器WnWn为0到1之间的数字,其中1对应奈奎斯特频率,采样频率的一半。(与其他方法不同,这里Wn对应6 dB点)对于高通滤波器,只需添加“高”函数的参数列表。对于带通或带阻滤波器,指定Wn作为包含通带边缘频率的双元向量。附加“停止”用于配置带停。

b = fir1(n,Wn,window)使用列向量中指定的窗口窗口为了设计。向量窗口必须n + 1元素长。如果不指定窗口,fir1应用汉明窗。

Kaiser窗阶估计。kaiserord函数估计滤波器的顺序,截止频率和Kaiser窗口beta参数需要满足一组给定的规格。给定一个频带边向量和相应的幅值向量,以及最大允许波纹,kaiserord对象返回适当的输入参数fir1函数。

多波段FIR滤波器设计:fir2

的故事函数还设计了加窗FIR滤波器,但具有任意形状的分段线性频率响应。这是相反的fir1该公司只设计标准低通、高通、带通和带阻配置的滤波器。

的命令

N = 50;F = [0.4 .5 1];M = [1 1 0 0];B = fir2(n,f,m);

返回行向量b包含n + 1阶系数n频率幅值特性与矢量所给出的频率幅值特性相匹配的FIR滤波器f而且f为从0到1的频率点向量,其中1表示奈奎斯特频率。中指定的点是否包含指定的幅值响应的向量f.(这个函数的IIR对应函数是yulewalk,它还设计基于任意分段线性幅值响应的滤波器。看到IIR滤波器设计详情)。

带过渡带的多波段FIR滤波器设计

firls而且firpm函数提供了一种比函数更通用的指定理想过滤器的方法fir1而且的故事功能。这些函数设计希尔伯特变压器、微分器和其他具有奇对称系数的滤波器(III型和IV型线性相位)。它们还允许您包含错误没有最小化的过渡或“不关心”区域,并执行最小化的频带相关加权。

firls函数是函数的扩展fir1而且的故事函数,它使规定的频率响应与实际频率响应之间的误差平方的积分最小。

firpm函数实现了Parks-McClellan算法,该算法利用雷米兹交换算法和切比雪夫近似理论设计了在指定频率响应与实际频率响应之间具有最佳拟合的滤波器。这些滤波器是最优的,因为它们使指定的频率响应与实际频率响应之间的最大误差最小化;它们有时被称为极大极小过滤器。以这种方式设计的滤波器在其频率响应中表现出等纹波行为,因此也被称为equiripple过滤器。Parks-McClellan FIR滤波器设计算法可能是最流行和应用最广泛的FIR滤波器设计方法。

的语法firls而且firpm是一样的;唯一的区别是他们的最小化方案。下一个示例展示如何使用firls而且firpm反映这些不同的方案。

基本配置

的默认操作模式firls而且firpm是设计I型或II型线性相位滤波器,分别取决于你想要的顺序是偶数还是奇数。一个低通示例的近似振幅1从0到0.4 Hz,近似振幅0从0.5到1.0 Hz是

N = 20;%筛选顺序F = [0 0.4 0.5 1];%频带边A = [1 1 0 0];%振幅B = firpm(n,f,a);

从0.4到0.5 Hz,firpm不执行误差最小化;这是一个过渡带或“不在乎”区域。在你所关心的频带中,过渡频带更能减少误差,以较慢的过渡速率为代价。这样,这些类型的滤波器有一个内在的权衡类似于FIR设计的窗口。

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

Bb = firls(n,f,a);

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

fvtool (b, 1, bb, 1)

请注意y-轴在下图中显示的是量级的平方。您可以通过右键单击轴标签并选择来设置这一点大小的平方菜单上的。

设计的过滤器firpm表现出等波纹行为。还要注意firls滤波器对大部分通带和阻带有较好的响应,但在带边(f0.4而且f0.5)时,反应与理想的距离较远firpm过滤器。这表明firpm过滤器的最大通带和阻带的误差更小,事实上,它是这个带边配置和滤波器长度的最小可能。

把频带看作是短频率间隔上的线。firpm而且firls用此格式表示任意分段线性频响函数的任意过渡带。firls而且firpm设计低通、高通、带通和带阻滤波器;一个带通的例子是

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.6 0.7 0.75 0.85 0.9 1];A = [1 1 0 0 1 1 0 0 1 1 1 0 0 1];

另一种可能是一种具有连接通带和阻带的线作为过渡区的滤波器;这可以帮助控制宽过渡区域的“失控”震级响应:

F = [0 0.4 0.42 0.48 0.5 1];A = [1 1 0.8 0.2 0 0];通带,线性跃迁,%阻带

权重向量

这两个firls而且firpm允许您将或多或少的重点放在最小化某些频段相对于其他频段的误差上。为此,在频率和振幅向量之后指定一个权重向量。示例低通等纹波滤波器,阻带纹波比通带小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”希尔伯特的选项,firpm而且firls设计奇对称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)';% 2秒时间向量X = sin(2* *300*t);% 300 Hz正弦波示例信号Xh = filter(bb,1,x);% x的希尔伯特变换

对应的解析信号x那是复信号吗x的实部和希尔伯特变换x作为它的虚部。对于这种FIR方法(可替代希尔伯特函数),必须延迟x通过一半的滤波顺序来创建解析信号:

Xd = [0 (10,1);x(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 0.9*pi],' d ');

' d '模式,firpm在非零振幅波段将误差加权1/ω以使最大值最小化相对错误。firls误差的权重为(1/ω)2在非零振幅波段' d '模式。

下面的图显示了上述微分器的幅度响应。

fvtool (b, 1, bb, 1)传说(“奇怪的秩序”“甚至秩序”“位置”“最佳”

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

约束最小二乘(CLS) FIR滤波器设计函数实现了一种技术,使您可以设计FIR滤波器,而无需显式地定义幅度响应的过渡带。省略过渡带规范的能力在几种情况下是有用的。例如,如果噪声和信号信息同时出现在同一频段,则可能不清楚严格定义的过渡带应该出现在何处。同样地,如果过渡带的出现只是为了控制出现在滤波器响应中的吉布斯现象的结果,那么省略过渡带的说明也是有意义的。参见Selesnick, Lang和Burrus[2]为了讨论这个方法。

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

CLS方法的关键特性是,它使您能够定义包含幅度响应中最大允许波纹的上下限阈值。给定这个约束条件,该技术在滤波器响应的频率范围内应用最小二乘误差最小化技术,而不是在特定的波段上。误差最小化包括理想的“砖墙”响应中的任何不连续区域。另一个好处是,这种技术使你能够指定由吉布斯现象产生的任意小的峰值。

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

描述

函数

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

fircls

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

fircls1

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

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

最基本的CLS设计功能,fircls1,利用该技术设计了低通和高通FIR滤波器。例如,考虑设计一个61阶脉冲响应和截止频率为0.3(归一化)的滤波器。进一步,将约束设计过程的上下限定义为:

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

  • 最大阻带偏离0(阻带波纹)0.008。

来解决这个设计问题fircls1,使用以下命令:

N = 61;Wo = 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];Up = [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,up,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;Wo = 0.3;Dp = 0.02;Ds = 0.004;Wp = 0.28;Ws = 0.32;K = 10;H = fircls1(n,wo,dp,ds,wp,ws,k);fvtool (h, 1)

请注意y-轴的单位是星等的平方。您可以通过右键单击轴标签并选择来设置这一点大小的平方菜单上的。

任意响应滤波器设计

cfirpm滤波器设计函数为设计具有任意复杂响应的FIR滤波器提供了一种工具。它与其他滤波器设计函数的区别在于如何指定滤波器的频率响应:它接受一个函数的名称,该函数返回在频率网格上计算的滤波器响应。这种能力使得cfirpm一种高度通用和强大的滤波器设计技术。

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

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

多带滤波器设计

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

乐队

振幅

优化权重

-0.5 [1]

(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-axis是在量级平方中,您可以通过右键单击轴标签并选择来设置大小的平方菜单上的。

滤波器的组延迟显示偏移量已从N / 2N / - 18(例如,30.514.5).然而现在,群延迟在通带区域不再是平坦的。要创建此图,请单击群延迟响应按钮。

如果我们将这个非线性相位滤波器与一个线性相位滤波器进行比较,该滤波器正好有14.5个组延迟样本,得到的滤波器是2*14.5,即29阶。使用B = cfirpm(29,[0 0.5 0.55 1],'lowpass')对于29阶滤波器,通带和阻带纹波要大得多。这些比较可以帮助您决定哪种过滤器更适合特定的应用程序。

Baidu
map