2021.9.30科研日志

文章目录

一、工作内容

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;
}

2021.9.30科研日志
能够看出来0数据完全被消减了。

3.杂七杂八

二、心得

今天看的论文的仿真也是有进行循环试验的部分,但是与我之前所做的循环试验不同的是,文章作者做的大量循环实验(1000次)产生的二维图像叠加成三维图像展现了出来,从而有着更好的直观性,非常值得学习。

三、未解决的问题

上一篇:拓端tecdat|matlab稳态和时变卡尔曼滤波器Kalman filter的设计和仿真植物动力学模型案例研究


下一篇:Kalman Filter—Extended Kalman Filter(EKF)