文章目录
一、工作内容
1.论文
后续内容是完全理解文献《Adaptive Kalman filter for actuator fault diagnosis》的内容,然后把仿真部分做出来。今天推进了一部分论文的仿真部分。
2.课程
昨晚洗澡突发奇想,嵌入式开发板里的温湿度传感器存在偶发的测量不到数据的情况:量测数据均为0,即使是加入了Kalman滤波算法,这个0数据上报实际会对估计后的状态值产生较大的不良影响。而且实际上这个0数据是非常容易进行剔除的:只要加入一个if语句,在数据为0的时候不进行量测更新,而是保持预测更新即可。
/* 滤波器算法 */
double KalmanFilter(Kalman *k,double x,double y){
k->p = k->A * k->p * k->A + k->Q;//p_pre(k+1)=A*p(k)*A+Q; P预测更新,直接覆盖,此时p为p_pre
x = k->A * x;//x_pre(k+1)=A*xkf_1(k);x预测更新,直接覆盖,此时x为x_pre
k->K = k->p * k->H / (k->H * k->p * k->H + k->R);//K更新,使用p_pre
//9.30变更0量测值剔除
if(y!=0){//如果有量测值就更新,没有就用先验估计(按趋势进行的估计)
x = x + k->K * (y - k->H * x);//xkf(k+1)=x_pre(k+1)+Kk_1*(z(k+1)-H1*x_pre(k+1));x量测更新,使用x_pre和y
}
//x = x + k->K * (y - k->H * x);//xkf(k+1)=x_pre(k+1)+Kk_1*(z(k+1)-H1*x_pre(k+1));x量测更新,使用x_pre和y
k->p = (1 - k->K * k->H) * k->p;//p(k+1)=(I-K*H)*p_pre(k+1);p量测更新,使用p_pre
return x;
}
能够看出来0数据完全被消减了。
3.杂七杂八
二、心得
今天看的论文的仿真也是有进行循环试验的部分,但是与我之前所做的循环试验不同的是,文章作者做的大量循环实验(1000次)产生的二维图像叠加成三维图像展现了出来,从而有着更好的直观性,非常值得学习。