陶新成 发表于 2018-1-3 14:14:52

卡尔曼滤波器只对正数起作用,请大家指导

#define KALMAN_Q        0.000001
#define KALMAN_R        1.0000
#define KALMAN_P0        1.0000


float KalmanFilter(float ResrcData,float ProcessNiose_Q,float MeasureNoise_R,float InitialPrediction)
{
        float R = MeasureNoise_R;
        float Q = ProcessNiose_Q;

        static        float x_last;

        float x_mid = x_last;
        float x_now;

        static        float p_last;

        float p_mid ;
        float p_now;
        float kg;       
   
        x_mid=x_last;
        p_mid=p_last+Q;
        kg=p_mid/(p_mid+R);
        x_now=x_mid+kg*(ResrcData-x_mid);
               
        p_now=(1-kg)*p_mid;       

        p_last = p_now;
        x_last = x_now;
   
    return x_now;
}
这段程序是我在网上找到的,用VC验证通过调节参数,滤波效果很好,但是只对正数起作用,对负数不能进行有效滤波,哪位能给分析一下,好做更改
页: [1]
查看完整版本: 卡尔曼滤波器只对正数起作用,请大家指导