具有不同中心频率的多个并行 IIR 带通滤波器组合成一个滤波器以进行优化......可能吗?

信息处理 过滤器设计 带通 优化
2022-01-26 19:45:59

在开始之前,我已经阅读了这些内容:

我正在高性能实时环境中使用 Csound 处理音频。我的代码的一部分并行使用了 10 个巴特沃斯带通滤波器,每个滤波器具有不同的中心频率和带宽。然而,中心频率和带宽都是相互关联的。每个滤波器的中心频率设置为主滤波器中心频率的整数倍或整数倍(即,如果主滤波器的 cf 为 100Hz,则其他滤波器 cfs 将为 200、300、400、500、600、50、33.333、 25 和 20)。每个滤波器的带宽都是相关中心频率的特定划分(即,cf 100 = bw 10、cf 200 = bw 20 等)。

主中心频率不是固定的,但鉴于滤波器的中心频率和带宽都与主滤波器的中心频率和带宽相关,我可以设计一个将所有这些滤波器组合为一个的滤波器吗?最重要的是,如果可以的话,它会对性能产生重大影响吗?

对于如何实现这一点,我最好的猜测是将过滤器方程组合成一个。我不知道这是否真的有效,但如果有效,我觉得它不会大大提高性能。

编辑:

被过滤的样本富含谐波和非谐波频率。它是边缘噪声,因此 BP 滤波器的输出总和非常有趣,并且和声并不总是完全相关的。我想保持这种品质。

1个回答

所以,我从我的多速率讲座中得到的是:

在这种情况下,您不使用 IIR,因为递归部分在多个过滤器实现之间不可共享(特定于每个过滤器的输出),因此,您最终得到的乘数比如果您选择了 FIR 系统并删除了冗余。对于硬件/FPGA 实现尤其如此,其中放置一条线以使用两次结果很便宜。你在做软件,所以节省几个寄存器的过滤器抽头真的不会付出代价——你打破了内存访问的线性特性,这将导致性能下降,更糟糕的是。

事实上,我会挑战你看看如何将你的滤波器组理解为一组具有相同滤波器的滤波器组。

例如,假设所有 BPF 的中心频率间隔相等fsampleN. 此外,它们可能具有不同的带宽,但是由于您说它们彼此相关,因此我们假设有一个“最大带宽”是所有较小带宽的倍数。

现在,实现具有最大带宽的 BPF 和恒定频率间隔的多相滤波器组(“通道器”)非常有效。基本上,这就像以全速获取单个非常 BPF,添加一个 FFT,您将获得系统的复杂性高达N频道(注意:这是N1免费频道!)。然后,选择需要进一步减少带宽的通道。现在,假设这些m<N所有通道都需要将带宽减少一个因子4, 例如。所以那是m相同的四分之一带低通滤波器!通常,在硬件中实现相同的滤波器非常有效,尤其是因为在第一个滤波器组之后,采样率可能已经降低(因此您可以复用乘法器);现在,你似乎在 PC 上做音频:

拿这些m通道,只需实现单个过滤器。这里没有什么可以或需要优化的;假设这是在具有类似 PC 的 CPU 的东西上,缓存将使您的过滤器抽头靠近 CPU 寄存器,并且只有实际样本需要通过内存总线。另外,不是那种东西1M低通滤波器在过渡宽度要求方面相对宽松,因此,FIR 实现的抽头短,因此速度快。

像往常一样在信号处理中,尽可能抽取!多相滤波器组可能已经抽取,但您的m通道低通滤波器也应该这样做,并且以一种巧妙的方式(多相低通抽取器在输出端运行,而不是输入采样率!)。不处理您不需要的样品可能是 Nr 的原因。1现代DSP如此强大。