日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【电赛】一阶卡尔曼滤波器 滤波效果良好

發布時間:2023/12/9 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【电赛】一阶卡尔曼滤波器 滤波效果良好 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 代碼
    • kalman.c
    • kalman.h
  • 濾波效果


很久以前抄的,忘了是從哪弄的了
我把它改成了這種結構體指針傳參的形式,方便在比賽中應用。應用舉例見MSP432 PID 電機調角度、調速。
它曾助力筆者獲2020年電賽省一等獎。

代碼

Q:過程噪聲協方差 Q參數調濾波后的曲線平滑程度,Q越小越平滑;
R:觀測噪聲協方差 R參數調整濾波后的曲線與實測曲線的相近程度,R越小越接近(收斂越快)

kalman.c

/* 卡爾曼濾波器 整理By 乙酸氧鈹 */ #include "kalman.h"double KalmanFilter(Kalman_Typedef *klm, double input) {//預測協方差方程:k時刻系統估算協方差 = k-1時刻的系統協方差 + 過程噪聲協方差klm->Now_P = klm->LastP + klm->Q;//卡爾曼增益方程:卡爾曼增益 = k時刻系統估算協方差 / (k時刻系統估算協方差 + 觀測噪聲協方差)klm->Kg = klm->Now_P / (klm->Now_P + klm->R);//更新最優值方程:k時刻狀態變量的最優值 = 狀態變量的預測值 + 卡爾曼增益 * (測量值 - 狀態變量的預測值)klm->out = klm->out + klm->Kg * (input -klm->out);//因為這一次的預測值就是上一次的輸出值//更新協方差方程: 本次的系統協方差賦給 klm->LastP 為下一次運算準備。klm->LastP = (1-klm->Kg) * klm->Now_P;return (klm->out); }void Kalman_Init(Kalman_Typedef *klm, const double klm_Q, const double klm_R)//溫度klm_Q=0.01 klm_R=0.25 {klm->LastP=0.02; //上次估算協方差klm->Now_P=0; //當前估算協方差klm->out=0; //卡爾曼濾波器輸出klm->Kg=0; //卡爾曼增益klm->Q=klm_Q; //Q:過程噪聲協方差 Q參數調濾波后的曲線平滑程度,Q越小越平滑;klm->R=klm_R; //R:觀測噪聲協方差 R參數調整濾波后的曲線與實測曲線的相近程度,R越小越接近(收斂越快) }

kalman.h

#ifndef __KALMAN_H__ #define __KALMAN_H__typedef struct {/*不用動*/double LastP;//上次估算協方差double Now_P;//當前估算協方差double out;//卡爾曼濾波器輸出double Kg;//卡爾曼增益double Q;double R; }Kalman_Typedef;void Kalman_Init(Kalman_Typedef *klm, const double klm_Q, const double klm_R); double KalmanFilter(Kalman_Typedef *klm, double input);#endif

濾波效果


總結

以上是生活随笔為你收集整理的【电赛】一阶卡尔曼滤波器 滤波效果良好的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。