我正在尝试在 C 中实现 Chebyshev I 型低通 IIR 数字滤波器。我从 Matlab 获得了 SOS 矩阵和比例值。
实现这种过滤器的直接方程或算法是什么?
我正在尝试在 C 中实现 Chebyshev I 型低通 IIR 数字滤波器。我从 Matlab 获得了 SOS 矩阵和比例值。
实现这种过滤器的直接方程或算法是什么?
好吧,这是或可以是直接出自教科书的内容。通过“SOS”,您的意思是“二阶部分”?我通常称这些“双二阶”。也许这不是 s-plane 中最好的术语。我不知道。
无论如何,为了保护你的通带纹波,你应该有每个 LPF 双二阶的谐振频率和 Q。您可以使用这两个参数并使用 Audio EQ Cookbook 直接从中获得数字双二阶。谷歌会为您快速找到它。
否则,将您的切比雪夫从 s 平面转换为 z 平面,但是你想要。Cookbook 使用双线性变换,这意味着模拟频率响应中的每个凸起或特征都会在数字频率响应中具有相应的凸起或特征。如果您对匹配脉冲响应更感兴趣,您可以使用 Impulse Invariant 方法转换 H(s) -> H(z)。
有人可能会因为我没有完全回答这个问题而拒绝我(他们过去已经这样做了)。大德尔。
我一直在使用一些非常好的基于网络的滤波器设计软件,可以一次性解决整个问题:http: //www.micromodeler.com/dsp
它进行滤波器设计、SOS 分解、求解整数系数并输出 C 或其他几个平台的代码。它非常直观,演示版应该为您提供所需的 C 代码。
即使您不直接在作业中使用生成的代码,您也可以看到它是如何完成的,您也可以使用他们的代码来检查您的结果。