有没有办法将 a 转换为具有最相似行为FIR
的过滤器?IIR
将 FIR 转换为等效的 IIR
我会说你的问题的答案 - 如果从字面上理解 - 是“不”,没有一般的方法可以简单地将 FIR 滤波器转换为 IIR 滤波器。
我同意 RBJ 的观点,解决该问题的一种方法是查看 FIR 滤波器的脉冲响应并使用时域方法(例如 Prony 方法)通过 IIR 滤波器来近似该脉冲响应。
如果您从频率响应开始,那么您有很多方法可以设计 IIR 滤波器。尽管它是在大约 25 年前发表的,但我相信Chen 和 Parks 的方法仍然是解决设计问题的更好方法之一。IIR 滤波器频域设计的另一种非常简单的方法是方程误差法,该方法在Parks 和 Burrus的《数字滤波器设计》一书中进行了描述。我已经在这个答案中解释过了。
如果相位响应对您很重要,那么在频域中设计 IIR 滤波器时您将面临的一个问题是准确选择所需的相位响应。如果给定所需相位的整体形状,您仍然有一个自由度,即延迟。例如,如果所需的相位是 $\phi_D(\omega)$,并且所需的幅度是 $M_D(\omega)$,那么您所需的频率响应可以选择为
$$H_D(\omega)=M_D(\omega)e^{j(\phi(\omega)-\omega\tau)}\tag{1}$$
其中$\tau$ 是一个未知的延迟参数。当然你可以说如果 $\phi_D(\omega)$ 被给出,那么你不想用额外的(正的或负的)延迟来修改它。但事实证明,在实践中,平均延迟并不总是很重要,而且 - 更重要的是 - 对于 $\tau$ 的某些值,对于给定的滤波器阶数,您的近似值将比其他滤波器阶数要好得多。因此延迟$\tau$ 可以成为一个额外的设计参数,应该选择最佳或至少合理。
我写了一篇关于设计具有规定幅度和相位响应的数字滤波器的论文。一章介绍了 IIR 滤波器的频域设计。该方法可用于设计在通带中具有近似线性相位的 IIR 滤波器,或用于近似任何其他所需的相位(和幅度)响应。过滤器不仅保证稳定,而且您还可以规定最大极点半径,即您可以定义一定的稳定裕度。您还可以在 IEEE Transactions on Signal Processing 上发表的一篇论文中找到此方法。
从 DSP 的角度来看,Matt L 的答案是最好的。
控制文献中存在一整套技术,它们也可能满足您的要求。虽然这并没有明确地将 FIR 滤波器转换为 IIR,但这些技术通常会找到 IIR 解决方案,除非应用了一些其他约束。
其中一些技术是:
另一种可能能够通过 IIR 滤波器近似(不完全匹配)给定任意频率响应(例如由某些给定 FIR 滤波器描述的频率响应)的方法是差分进化。差分进化是一种遗传算法,为此,它迭代地选择和调整一组极点和零点,以试图最小化计算的差异误差。似乎有几篇关于该主题的 IEEE 论文,以及 Rick Lyons 的一本书(“Streamlining DSP”)中的一章。
如果您试图将 IIR 的脉冲响应与给定的脉冲响应相匹配,但它是在数学上定义的(我猜 FIR 的定义与任何定义一样好),我一直认为Prony 方法是第一个解决问题。
如果您试图将 IIR 的频率响应与给定的频率响应相匹配,但它是在数学上定义的(我猜 FIR 的频率响应与任何定义一样好),我最近认为Greg Berchin 的FDLS可能是要走的路。Richard Lyons(他对您的问题发表了评论)发表了一篇专着,其中 Greg 有一章描述了该方法。Matt L也对这个问题进行了研究并发表了文章。