我应该通过卡尔曼滤波器绝对值还是平均偏移传感器值?

信息处理 卡尔曼滤波器 声学 协方差
2022-02-11 02:42:55

我正在使用卡尔曼滤波器将声学信号的响度与周围的噪声区分开来。我遇到的问题是测量“静音”(-70dB,-69dB,-71dB,...)的麦克风静音或故障麦克风具有低方差,因此卡尔曼滤波器依赖它们更稳定,“下拉”真正的价值。

为了解决这个问题,我的想法是传入所有信号的均值偏移量,这会增加“死传感器”的方差,我可以将均值加回到状态估计增量中。但后来我突然想到,也许卡尔曼滤波器已经通过最小化“最小二乘误差”来做到这一点?

我遇到的第二个问题是在不丢失协方差矩阵的情况下动态添加或删除传感器。目前,当传感器离开时,我保持相同的矩阵,但我设置了它的观察方差R_ij = Infinity,这似乎有效。但是,我很想知道在添加或删除其他传感器时如何重新排列我的矩阵值。

2个回答

正如另一个答案中提到的,测量噪声的方差是模型的一个属性,它被烘焙到卡尔曼滤波器中。

我认为您遇到了一个不同的问题,即您的模型与现实不同。听起来您正在对系统进行建模,假设所有麦克风都是“活动的”。如果是这种情况,那么过滤器不会将死麦克风视为可以忽略的东西 - 它会将死麦克风视为“听到”完全有效的静音的实时麦克风。

请注意,在模型不匹配的情况下,卡尔曼滤波器可以做一些明显荒谬的事情。因为他们假设所有事物都是高斯分布,并且因为当你偏离均值时,高斯的 PDF 会急剧下降,所以他们在处理具有低峰度的现实世界过程时确实做得不好,他们也不能处理模型错配得很好。

你需要修改你的过滤器,或者清理它的输入。最好通过使用外部“死麦克风”检测器来修改过滤器(并确保你做对了——你基本上会自动抛出异常值,并且这样做太热情存在已知的问题)。或者,确保有人检查数据并确保麦克风处于活动状态。

你在这里做的不是卡尔曼过滤器。您写“测量‘静音’(-70dB、-69dB、-71dB、...)的消音或故障麦克风具有低方差,因此卡尔曼滤波器依赖它们更稳定”,但方差不是测量的大小,而是模型的一部分。并且该模型不适应先验死亡的传感器(当然,如果您知道传感器死亡的外部知识,您可以使用它来更改模型,可能使用诸如隐藏马尔可夫模型之类的东西来检测其死亡时间)。

因此,您的所有问题都超出了 Kálmán 过滤器的参数,而是涉及对它的临时修改或对其模型的完全适应。由于您没有提供有关您正在使用哪种修改或改编的任何信息,因此无法回答您的问题。