我有一个 DSP 应用程序,它使用五个级联双二阶过滤信号,其系数由 Audio EQ Cookbook 公式确定(感谢 Bristow-Johnson 先生的这项工作)。每个滤波器的系数可以通过 RS232 从 matlab 应用程序单独更改,但是这样做会产生可听见的咔嗒声。
为了防止点击,我的第一个想法是对各个系数进行低通滤波以平滑过渡。我的一个朋友告诉我,这可能会导致不稳定。他在该领域比我更有经验,而且我仍然缺乏证明/反驳他的主张或找出在这种情况下哪些情况会导致不稳定的能力,所以我认为他的话是理所当然的。
但是,他的解决方案(而不是平滑参数,然后计算正确的系数)对我不起作用。由于带宽限制,在 Matlab 中计算中间值并传输它们不是一种选择,由于 CPU 时间有限,在 DSP 上计算它们不是一种选择。
一种解决方案是使用两个并行过滤器并在它们之间交叉淡入淡出。但我不是特别喜欢它,因为它使我的计算负载加倍,而且快速连续的两次变化无论如何都会导致听到咔哒声。
我的下一个想法是使用 Gold-Rader 结构(见下文)作为双二分母。由于这个结构使用了极点半径,它总是保持在 1 以下(只要我用一个不会过冲的滤波器过滤它......),它不会变得不稳定......除了半径在信号流图中引入之前,和相乘。因此,如果我正在传输计算的产品和,我再次不确定过滤这些系数将如何影响稳定性。 五个双二阶中的每一个都必须在 20 Hz 至 20 kHz、-18 至 +18dB 增益(如适用)和峰值的 0.5 至 10 范围内可调。但是滤波器的类型保持不变(即高通将始终保持旁路,峰值滤波器将始终是峰值滤波器......)。
所以我的问题是:在不冒过滤器不稳定风险的同时避免点击的最有效方法是什么?