我正在尝试编写一个 DSP 滤波器来研究扬声器滤波器的原型,它将在最终扬声器系统中作为无源模拟电路实现。该过程涉及整个扬声器系统的电声仿真,考虑到扬声器驱动器的真实阻抗曲线、它们的声频响应和扬声器外壳的声学。因此,(模拟的)模拟滤波器的最终传递曲线不遵循任何“教科书式滤波器函数”。
我尝试将 IIR/双二阶滤波器系数拟合到模拟滤波器定义的目标函数。为此,我使用了GNU Octave 中的invfreqz函数。这种方法可以实现 IIR/biquad 滤波器函数与模拟滤波器目标函数的非常好的拟合。但是,IIR/双二阶滤波器通常不稳定,因此在我的情况下它们是无用的。
我认为 invfreqz 函数的 Matlab 实现在估计稳定滤波器方面要好一些,但我想这可能不是问题的最终答案(我无法访问 Matlab,所以我无法检查)。我还想使用免费软件来实现该解决方案,可能采用与“invfreqz 的蛮力应用”有些不同的方法。
我对 DSP 过滤方法不是很有经验,所以我对如何解决这个问题有点无能为力。估计 IIR/双二阶滤波器系数的实用方法是什么,它给出的传递函数与模拟滤波器定义的任意目标函数“足够相似”?