最近出现了一个关于Parks-McClellan 的问题,一些评论指出,关于 Parks-McClellan 的维基百科文章指出,
... Parks-McClellan 算法是 Remez 算法或 Remez 交换算法的变体。
性能上有区别吗?八度音程中的remez
函数是否等效于 Matlab 函数firpm
?
最近出现了一个关于Parks-McClellan 的问题,一些评论指出,关于 Parks-McClellan 的维基百科文章指出,
... Parks-McClellan 算法是 Remez 算法或 Remez 交换算法的变体。
性能上有区别吗?八度音程中的remez
函数是否等效于 Matlab 函数firpm
?
Remez 交换算法是一种通用的迭代过程,用于在意义(即,给出最好的最坏情况近似值,或者换句话说,最小化最大误差或 minmax)。Parks-McClellan 算法 (PM) 是 Remez 交换算法的变体,专门用于 FIR 滤波器。从您引用的wiki文章中:
托马斯 [帕克斯] 从休斯敦开车到普林斯顿参加一个会议。在会议上,他听取了 Ed Hofstetter 关于新的 FIR 滤波器设计算法(最大纹波算法)的演讲。他将 Hofstetter、Oppenheim 和 Siegel 的论文带回休斯顿,思考使用切比雪夫近似理论设计 FIR 滤波器的可能性。听说Hofstetter算法实现的方法与Remez交换算法类似,决定走Remez交换算法的道路。
无需过多介绍,两种算法之间的主要区别在于 Remez 交换算法 (RE) 为您提供了设计最佳滤波器的条件(具体请参见此处的 #3:误差必须具有相同的加权幅度并且符号交替)。RE 实现了一个迭代过程来计算满足上述标准的多项式系数(可以映射到 FIR 滤波器系数),即“交替定理”。RE 中的“E”是迭代过程中使用的误差最大值被更接近最优值的新最大值替换的过程的一部分。PM 使用 Tchebyshev 多项式将多项式系数转换为控制一系列余弦函数的系数,这些余弦函数直接转换为对称 FIR 系数。
关于remez
Octave 中的firpm
函数和 MATLAB 中的函数的问题,我相信它们是相同的。MATLAB 曾经有一个remez
,后来被firpm
. 八度可能仍然坚持前者。help remez
在 MATLAB R2011b 中输入以下内容:
REMEZ Parks-McClellan 最优等波纹 FIR 滤波器设计。
REMEZ is obsolete. REMEZ still works but may be removed in the future. Use FIRPM instead. See also FIRPM.