DFiltMPFIR 函数用于设计最小相位 FIR 滤波器。其工作原理如下:
- 调用 DFiltFIR 函数(单独提供)设计双倍长度滤波器。DFiltFIR 允许对响应进行限制,通过设置限制条件强制响应为正,进而得到具有双阶阻带零点的线性相位滤波器。
- 由于得到的双倍长度线性相位滤波器具有双阶阻带零点,因此可以将其分解为最小相位和最大相位滤波器的乘积,这两个分量滤波器具有相同的幅度响应。
- DFiltMPFIR 将滤波器分解为组成部分。它利用 DFiltFIR 输出的阻带中极值位置识别双阶阻带零点。
- 使用多项式求根算法找到双倍长度滤波器的根。然后,排除与阻带零点对应的根,因为 DFiltFIR 提供的根信息比求根算法得到的信息更准确。
- 将剩余的根分解为单位圆内部和外部的根,从而将零点隔离为滤波器因子的零点。