找到给定滤波器原型的参数以适应所需频率响应的过程是什么?

信息处理 过滤器 过滤器设计 优化 最小二乘 双二阶
2022-02-07 10:37:44

为了对系统的频率响应进行建模,我正在寻找一种方法来使用优化算法将级联双二阶滤波器的响应与该系统的响应相匹配。要拟合的滤波器原型的域传递函数为:S

H(s)=w02N1(s+wz)[s2+(w0/Q)s+w02]N

该原型对所有部分使用一个相同的以保持参数数量尽可能少并避免过度拟合(这样过滤器/模型可以很容易地推广而无需重新拟合)。Q

原型可以分解为级联的个二阶低通部分和一个二阶带通部分。对于阶数,分解后的传递函数可以写成:N1N=4

H(s)=w02s2+(w0/Q)s+w02×w02s2+(w0/Q)s+w02×w02s2+(w0/Q)s+w02×w0(s+wz)s2+(w0/Q)s+w02

例如,优化算法可以最小化一些成本函数以找到最佳滤波器参数(:品质因数,:滤波器阶数,:自然频率, :确定低频斜率的比率:滤波器增益)适合所需的频率响应。QNw0wZw0G

确定滤波器原型的最佳参数以拟合/建模所需频率响应的好方法是什么?

感谢您的帮助。

PS:我之前写过一篇关于相关问题的文章,但当前问题的框架更好。

2个回答

与其重新构建您自己的方法(您应该在某个时候确定这样做),不如先开始查看所有可用的现有系统识别(Ref.MatlabRef.Python)和滤波器设计(Ref.MatlabRef.Python)工具,可能不是完全相同的参数形状,而是处理您在此处显示的参数、规格和模型结构,包括您的SOS 部分过滤器结构。

请注意,可用的工具解决了您提到的大多数参数,最终解决了更多参数,即截止频率、带通纹波、抑制带纹波及其公差等,这些参数开发起来更加模糊。

确定滤波器原型的最佳参数以拟合/建模所需频率响应的好方法是什么?

这是一个相当标准的非线性优化问题。常见的解决方案是定义一个误差标准,计算误差相对于模型参数的偏导数,然后使用迭代优化器,例如“最速下降”或“共轭梯度”。

这是否有效,很大程度上取决于您的目标。您的模型在拓扑结构和自由度方面非常严格,因此会有一些目标会严重失败,因为它不适合。

更标准的方法直接在 z 域中工作,并使用极点和零点位置作为参数。这允许允许可能的过滤器成为解决方案,并且您不会将自己限制在特定的过滤器拓扑中。