欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2065|回復: 2
收起左側

卡爾曼濾波什么情況要用矩陣運算? 什么情況無需矩陣運算?

[復制鏈接]
ID:858964 發表于 2021-6-2 13:10 | 顯示全部樓層 |閱讀模式
本帖最后由 Kxuan163 于 2021-6-2 13:16 編輯

例如以下例子,沒有矩陣運算:
main.c

#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
#include "adc.h"
#include "MCP4725.h"
#include "myiic.h"
#include <stdio.h>
#include "kalman.h"        
#include "math.h"        

u16    data;    //ADC采樣值
u16    data2;   //濾波所得最優值
float  MV;      //浮點數格式的采樣值,即測量值
float  KG;      //KalmanGain 卡爾曼增益
float  EC =0.1; //EstimateCovariance 估計協方差初值
float  MC =0.2; //MeasureCovariance 測量協方差初值
float  EV=1000;  //EstimateValue 估計初值

//卡爾曼濾波函數/////////////////
  float kalman_Filter()
{
data =ADC_GetConversionValue(ADC1); //采樣
MV =(float)data;

KG =EC*sqrt(1/(EC*EC+MC*MC)); //計算卡爾曼增益
EV =EV +KG*(MV-EV);  //計算本次估計值
EC =sqrt(1-KG)*EC;   //更新估計協方差
MC =sqrt(1-KG)*MC;   //更新測量協方差
return EV;           //返回最優估計值
}

//主函數////////////////////////////////
int main()
{
  delay_init();         
  ADC1_GPIO_Config();
  ADC_Config();  
  MCP4725_Init();                     

while(1)
  {
    kalman_Filter(); //卡爾曼濾波
    data2 =(u16)EV;                 
    MCP4725_WriteData_Digital(data2); //濾波后再作DA變換        
   }
}


回復

使用道具 舉報

ID:818024 發表于 2021-6-3 12:27 | 顯示全部樓層
看著來唄,多個輸入就列出列向量,濾波參數作為系數矩陣,然后for循環解完發出去。
個人認為是不是矩陣其實無所謂,無非寫出來更好看,效率更高
回復

使用道具 舉報

ID:858964 發表于 2021-6-3 13:06 | 顯示全部樓層
本帖最后由 Kxuan163 于 2021-6-3 13:07 編輯
yabiyff 發表于 2021-6-3 12:27
看著來唄,多個輸入就列出列向量,濾波參數作為系數矩陣,然后for循環解完發出去。
個人認為是不是矩陣其 ...

謝謝回答! 未知我的理解是否正確:
在SISO(單輸入單輸出)系統,無需矩陣運算;
在MIMo(多輸入多輸出)系統,宜用矩陣運算。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表