Skip to navigation
Skip to content
理想的低通滤波器是允许低于指定截止频率的信号的所有频率分量通过,而其他的频率分量则不能通过。其频率响应满足
由于实现理想低通滤波器所需的脉冲响应是无限长的,因此设计理想的FIR低通滤波器是不可能的。用有限长的滤波器去逼近理想的脉冲响应会导致在滤波器的通带和阻带产生波纹,同时会在通带和阻带间形成过渡带。
无论是通带和阻带的波纹还是过渡带都是我们不希望的,但遗憾的是,在用FIR近似理想的滤波器时,这种误差是不可避免的。所以在实际情况中,在设计FIR滤波器时要满足特定的要求,例如:规定过渡带的宽度和最大的通带和阻带波纹低于某一特定值。
此外在设计滤波器时必须考虑滤波器的阶数,我们也把滤波器阶数叫做滤波器脉冲响应的长度。我们经常把滤波器设计的每一个指标比作三角形的一个角。
这个比喻可以很好的解释设计时可以使用的自由度。因为三角形的内角和是固定的,所以最多可以自由选择两个角的值。第三个角度由使用的设计算法决定。此外,就像三角形中的角一样,如果我们把其中一个角度变大或者变小,另外一个或者两个角的值也会受到影响。
下面我们给出一个滤波器设计指标的例子,以便于更好的理解滤波器设计的指标。
Matlab中的firl或者工具箱里面包含加窗函数脉冲响应算法,我们使用这两种方法和Kaiser窗可以很容易的设计出滤波器。设计出的滤波器的零相响应如图所示。
这里我们需要注意的是由于已经规定了过渡带的宽度和波纹的最大值,所以滤波器的阶数也就确定了。
通过图3我们可以看到通带的截止频率为0.37π,止带的起始频率为0.43π,这是符合上文提出的设计指标的。通常我们在选择设计指标时会有一定的裕度,因为在选择阶数时都是往上去选的。
前文提到Matlab中很容易使用fir1函数或filterDesigner工具实现窗函数法低通滤波器,但这仅仅是一种逼近的方法,还有其他相对复杂但更精确的达到设计指标的方法。
由于FIR的线性相位十分容易获得,所以其在工程应用中十分常见,在图像处理和数据传输系统中的应用更是十分广泛。我们通过简单的数学分析得到滤波器的零相响应,设计滤波器就变成一个数学问题,其流程如下所示:确定最佳近似值—理想低通滤波器的频率响应—多项式计算—得到滤波器阶数。
FIR滤波器可以直接设计得到精确的线性相位,线性相位的滤波器意味着滤波器的系数是对称的或者反对称的,然而,正是由于这种系数上的对称特性,限制了设计的多样性。对于一个N阶滤波器而言,只有N/2+1个系数是可以自由设计的,另外N/2个系数是根据对称性确定的。
图4 带相位限制和没有相位限制的FIR滤波器的关系图
通过维恩图我们可以看到,对滤波器进行分类后,在设计滤波器时我们可以大大减少搜索的范围,A代表有特定的相位要求的线性滤波器,这里面就包含等波纹滤波器、最小二乘滤波器等。B就代表了所有的FIR滤波器,显然B中包含A。
使用firlpnorm函数可以设计非线性相位滤波器,下面给出一个简单的例子。设计指标:
要满足上述参数,设计出来的线性相位滤波器有37阶,使用firlpnorm函数设计出的滤波器只有30阶,实际上这种改善是十分可观的。
实际中非线性相位在阶数上的改善是通过牺牲设计上的简单获得的,也就是说,非线性相位滤波器虽然阶数较少,可是实现起来却相较线性相位滤波器更加困难。总而言之,在设计滤波器是并不存在最佳的方案。
在设计滤波器时,当没有要求相位的线性性时,用firlpnorm函数设计的滤波器与firls函数设计的滤波器相比性能要好很多,如下例所示:
使用前者设计的非线性相位滤波器的过渡带宽度更窄,止带的衰减更大,通过图我们可以看到止带的细节。
原文始发于微信公众号(雷达通信电子战)
在线客服