我阅读了 FIR 滤波器的设计方法,它们是:开窗法、采样频率法和等波纹法。而且我不明白 Equiripple 方法中波纹的使用及其在过滤过程中的作用。谁能帮我?
Equiripple 方法中的纹波有什么用,以及它们在滤波过程中的作用是什么?
此图中描绘了三个不同程度的波纹:
纹波是滤波器增益与目标增益的方差。在上面,有 3 个不同的频率段,有 3 个不同的目标增益(嗯,两个目标增益相同),以及 3 个不同的误差加权因子。
第一个频率段,从 0 到 0.2 奈奎斯特:目标增益 dB 增益(线性增益 = 0,“阻带”),最大阻带增益约为 -67 dB(纹波 = 0.00045)。
第二个频率段,从 0.2 到 0.6 奈奎斯特:目标增益 0 dB(线性增益 = 1,“通带”),大约 dB 偏离 0 dB(纹波 = 0.44)。
第三个频率段,从 0.6 到 1.0 奈奎斯特:目标增益 dB 增益(另一个阻带),最大阻带增益约为 -47 dB(纹波 = 0.0045)。
您会看到纹波(以线性误差表示)乘以权重(100、1、10)大约是恒定的。
波纹是错误的。这是实际 FIR 滤波器中的增益与您设定的目标的偏差。每个波段的这个误差,除了是相互之间的权衡(给定固定数量的 FIR 抽头)之外,它也是与过渡波段的陡度的权衡。至少在选择 FIR 设计方法时是这样。如果总“平均”误差是突出的,那么您的设计方法可能是最小二乘法(firls()
在 MATLAB 中),如果最大误差(在每个波段中)是重要的,那么设计方法可能是Parks-McClellan(firpm()
)。
现在,理论上,使用良好窗口(如 Kaiser)的窗口 FIR 设计可以与上面的两种“优化”和迭代方法竞争,并且还会有纹波测量,但通常将纹波视为线性增益,是相同的在通带中与在阻带中一样,但以 dB 为单位更多的是在阻带中。使用 Kaiser 窗口设计,您几乎看不到任何通带波纹。考虑到相同的过渡带和阻带衰减,Kaiser 窗设计的 FIR 可能只比最优的 Parks-McClellan 设计长一点。
“最佳” P-McC 设计将在通带中显示波纹(无论您在权衡中允许的程度),这可能会使 Kaiser 窗口设计看起来更好。有时我会在 P-McC 上选择一个简单的 Kaiser 窗口设计,特别是如果我想上采样只有两倍。在这种情况下,如果它是一个窗口正弦函数,我不需要计算一半的输出样本,因为我是从输入中复制它们(P-McC 没有该功能)。但是如果我向上采样 4 或更多,P-McC 将具有更短的 FIR,足以弥补计算输出样本而不是复制的要求。
波纹是用于创建滤波器的多项式的伪影(与多项式/滤波器的阶数有关)。因此 FIR 会有纹波,我们希望将其最小化以满足我们的设计要求。通带纹波会在我们的波形中引入前导回波和尾随回波,因此这不是我们想要获得的所需特性,而是我们想要最小化的滤波器伪影。
有关通带(和阻带)纹波的类似详细信息,另请参阅以下帖子:数字滤波器的通带纹波和阻带衰减是什么?
等波纹是通带和/或阻带波纹的规范标准。在许多情况下,将纹波峰值指定为相等会导致最大纹波峰值最小化,从而可能满足一些极小极大优化标准。因此,当尝试设计可以说对于某些过滤器规范标准是“最佳”的过滤器时,经常使用等波纹方法。
然而,优化一组频域标准也可能导致其他标准的次优性能,例如最小化时域响应中的可见前/后回波。