• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32怎么实现自适应卡尔曼滤波?

Edisons 2019-05-05 浏览量:2036
如何用STM32实现这样的操作
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 应用C语言实现自适应卡尔曼滤波算法,然后再STM32中调用相关函数对数据进行滤波融合处理,当然首先你得了解熟悉卡尔曼滤波及自适应卡尔曼KF滤波的原理和过程另外需要注意的是STM32需要包含FPU以便实现硬件浮点运算提高效率,需是M4核以上的STM32才合适,如STM32F4/F3STM32F7/H7系列等
    • 发布于 2019-05-06
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 主要是C语言实现的算法
    /@@*-------------------------------------------------------------------------------------------------------------*/
    /@@*       
            Q:过程噪声,Q增大,动态响应变快,收敛稳定性变坏
            R:测量噪声,R增大,动态响应变慢,收敛稳定性变好       
    */
    
    double KalmanFilter(const double ResrcData
                                            double ProcessNiose_Qdouble MeasureNoise_Rdouble InitialPrediction)
    {
            double R = MeasureNoise_R;
            double Q = ProcessNiose_Q;
    
            static        double x_last;
    
            double x_mid = x_last;
            double x_now;
    
            static        double p_last;
    
            double p_mid ;
            double p_now;
            double kg;       
    
            x_mid=x_last; //x_last=x(k-1|k-1)x_mid=x(k|k-1)
            p_mid=p_last+Q; //p_mid=p(k|k-1)p_last=p(k-1|k-1)Q=噪声
            kg=p_mid/(p_mid+R); //kg为kalman filter,R为噪声
            x_now=x_mid+kg*(ResrcData-x_mid);//估计出的最优值
                   
            p_now=(1-kg)*p_mid;//最优值对应的covariance       
    
            p_last = p_now; //更新covariance值
            x_last = x_now; //更新系统状态值
    
            return x_now;               
    }
    
    /@@*-------------------------------------------------------------------------------------------------------------*/
    • 发布于2019-05-08
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32怎么实现自适应卡尔曼滤波?