FIR滤波器单位圆外零点计数算法

信息处理 有限脉冲响应 算法 最小相位 dsp-拼图
2022-01-30 18:37:35

正如这篇文章中详述的那样,我可以在 FIR 滤波器的第一个抽头上设置一个约束,使其反相稳定吗?我展示了如何使用柯西论证原理轻松确认 FIR 滤波器是否是最小相位,这意味着所有零都在单位圆内或单位圆上,或者相反的最大相位,只需在复平面上绘制频率响应。

但是,我使用的方法是完全图形化的,因为我必须绘制频率响应,然后手动计算原点的环绕数。原点的每个环绕表示一个在单位圆之外的零。

我的问题是什么是基于 Cauchy 参数原则的紧凑且有效的算法方法(不是图形),它比求解根并确定所有根的或任何其他计算单位圆外有多少个零?|z|>1

图形方法如下,使用上面链接帖子中的示例,使用系数为 [1 -3 -3 2 5] 的最大相位 FIR 滤波器。频率响应(幅度和相位与频率的关系)绘制在下面的复平面上。计算环绕的图形方法是从原点以任意角度向无穷远画一个向量,并计算发生了多少频率响应的交叉。下面你会计算 4 个环绕,表示所有四个零都在单位圆之外。(最小相位滤波器将没有包围)。计算环绕的简单方法是注意频率响应上的方向,其正向方向与增加的 ω 一致,然后以任意角度从原点向无穷大画一个向量,并计算频率响应发生了多少次交叉:如果十字是正向,则计数增加,如果是负向,则计数减少。请注意,考虑到交叉点的位置,它并不像只计算实轴或虚轴上的交叉点那么简单(这里实轴不能工作,但虚轴可以,但这不是一般的解决方案)。

在此处输入图像描述

1个回答

这是一个答案,如果有人可以对此进行改进,我将选择它作为“正确”答案(也非常欢迎对这种方法的明显缺陷发表评论):

给定 Cauchy 的论证原则,单位圆外的零点数由在复平面上绘制的滤波器频率响应的原点的环绕数给出。每个包围都会导致展开的相位在任何间隔走得更远±ππ在归一化弧度频率

因此,算法方法是展开相位,删除初始相位ω=0然后计算由给出的水平线的交叉次数±π,使用 Bentley-Ottman 算法有效地计算交叉点:https ://en.wikipedia.org/wiki/Bentley%E2%80%93Ottmann_algorithm 。

此处给出了有关算法相位展开的更多详细信息:

https://www.ljmu.ac.uk/~/media/files/ljmu/about-us/faculties-and-schools/fet/geri/onedimensionalphaseunwrapping_finalpdf.pdf