再问关于卡尔曼滤波的问题(原理见内)
关于Kalman滤波及故障检测采用Kalman滤波来检测传感器的故障大家可能都听说过,我有一个疑问。就是,如果检测到的值和估计值差别较大的话,残差会表现的比较明显,所以有一种根据残差来判断故障的残差x2检验法。
我的疑问就是,它怎么来判断当前检测的这个值(也就是传感器的测量值)的变化,到底是因为传感器的故障而引起的测量不准呢,还是由于被测的对象确实发生了波动呢??
首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:
X(k|k-1)=A X(k-1|k-1)+B U(k) ……….. (1)
式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。
到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的covariance还没更新。我们用P表示covariance:
P(k|k-1)=A P(k-1|k-1) A’+Q ……… (2)
式(2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的covariance,A’表示A的转置矩阵,Q是系统过程的covariance。式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。
现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):
X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……… (3)
其中Kg为卡尔曼增益(Kalman Gain):
Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……… (4)
到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。但是为了要另卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的covariance:
P(k|k)=(I-Kg(k) H)P(k|k-1) ……… (5)
其中I 为1的矩阵,对于单模型单测量,I=1。当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。这样,算法就可以自回归的运算下去。
卡尔曼滤波器的原理基本描述了,式子1,2,3,4和5就是他的5 个基本公式。 他的这5个式子,用来对测量值进行预测,是没有问题的。在MATLAB中已经实现了。
我看到有的文章上讲的,用卡尔曼滤波的估计值减去实际的测量值(及残差,或叫新息)。可以用来判断传感器的故障。当传感器出现故障时,它的测量值和滤波器的估计值有很大的差异(和实际值也有很大的差异),就可以通过残差表现出来。
我的问题是,如果在某一时刻,被测量的值确实发生了变化,那么这个时刻的残差不也会表现的很大么?
怎么来区分测量值的变化究竟是由于传感器引起的,还是系统的真实变化呢?
卡尔曼滤波如何解决飞行传感器的故障检测与识别?
卡尔曼滤波如何解决飞行传感器的故障检测与识别?其在MATLAB中的仿真实验如何进行? 急用 谢谢了 传感器的实际测量值和滤波器估计值相减,故障是残差会表现的比较明显。在MATLAB中给一组输入,用上面的5个式子做预测值,两者之差为残差
请问 stpentiumv
请问您 如果要用卡尔曼滤波对余度传感器进行故障检测 如何建立具体的卡尔曼滤波方程 有相关的资料么我对这方面很不熟悉 但现在急要用 :handshake十分感谢
页:
[1]