使用卡尔曼滤波器的主动降噪

信息处理 噪音 卡尔曼滤波器
2022-02-11 19:18:24

我正在对 matlab 中以 8Ksps 采样的音频数据进行信号处理,但它被随机噪声破坏了。因此,我决定使用 LMS 和 RLS ANC 算法来消除重叠频率噪声,我发现 RLS 的性能优于 LMS 和 NLMS。但现在我想使用卡尔曼滤波器,以便获得更好的结果。我知道卡尔曼滤波器并在许多基本应用中使用过,但不知道如何将它用于 ANC。如果有人给我一些想法,我将不胜感激💡。

1个回答

我猜你使用 LMS 和 RLS 滤波器是因为它们是自适应的,如果你用模型的参数增加状态向量,你可以用卡尔曼滤波器做同样的事情。然后你得到一个非线性系统,你可以使用任意数量的非线性卡尔曼滤波器实现来解决这个问题,最常见的是扩展卡尔曼滤波器 (EKF),其次是无迹卡尔曼滤波器 (UKF),然后还有一些更奇特的变体,例如二阶卡尔曼滤波器。任何这些过滤器的收敛特性都没有已被证明,但它们似乎在实践中工作得很好。UKF 通常被认为比旧的 EKF 更好,因为它不需要雅可比矩阵的反转,并且它表现为更高阶的近似值——我似乎记得高斯噪声的三阶(与 EKF 的一阶相比) )。

EKF 可能更容易上手。通过将未知参数建模为 Wiener 过程,您可以使用 EKF 进行参数调整。考虑线性系统 带有未知参数通过增加状态向量以包含未知参数,我们获得了非线性系统 ,,其中

x˙=A(θ)x+B(θ)u+wy=C(θ)x+v
θRpχT=[xT,θT]χ˙=f(χ,u)+wy=h(χ)+v
f(χ,u)=[A(θ)x+B(θ)u0]h(χ)=C(θ)x.
该系统的雅可比FH
F=[A(θ)θ[A(θ)x+B(θ)u]00]x^,θ^,H=[C(θ)θ[C(θ)x]]x^,θ^.

EKF 和 UKF 的一般实现以及参数调整可以在多个出版物中找到。我个人喜欢 Dan Simon,2006 年的“最优状态估计:卡尔曼、H和非线性方法”(ISBN:978-0-471-70858-2)。