一階擬合演算法C(六軸)

2021-09-19 12:02:53 字數 1713 閱讀 6159

imu溫飄曲線擬合演算法經常用到一階擬合,原始資料報含溫度和加速度陀螺儀xyz軸資料,imu原始資料屬於大量資料,需要採集大量資料樣本(軸資料和溫度),用到的基本函式:

求平均:

double get_mean(vector::const_iterator it1, vector::const_iterator it2)

return sum / size;

}

求方差:

double get_variance(vector::const_iterator it1, vector::const_iterator it2)

vector::size_type sz = it2 - it1;

vector::const_iterator it11 = it1;

vector::const_iterator it12 = it1;

while(it11 != it2)

mean = sum / sz;

while(it12 != it2)

return var / sz;

}

原始資料採集:

bool cimu::get_accdata(double temp_, double ax_, double ay_, double az_)

// cal cof

if(temp_ >= stop_temperature || acc_total_cnt>=stop_time)

else

}bool cimu::get_gyrodata(double temp_, double gx_, double gy_, double gz_)

// cal cof

if(temp_ >= stop_temperature || gyro_total_cnt>=stop_time)

else

}

採集完畢(達到時間點或者條件):

bool cimu::get_cof(bool acc)

else

return true;

}

擬合演算法得出結果:

vectorget_ls_cof(const vector&x, const vector&y)

imu溫飄擬合物件:

class cimu

~cimu()

bool get_data(double temp_, double ax_, double ay_, double az_, double gx_, double gy_, double gz_);

bool get_accdata(double temp_, double ax_, double ay_, double az_);

bool get_gyrodata(double temp_, double gx_, double gy_, double gz_);

vector< vector> get_acof_data()

vector< vector> get_gcof_data()

};

C 最小二乘法直線擬合演算法

測試資料 x2 3456 y0.22 0.38 0.55 0.65 0.70 terminal 粗體為輸出,其它為輸入 請輸入樣本點的數目 5 請輸入樣本點的坐標。x,y 2,0.22 x,y 3,0.38 x,y 4,0.55 x,y 5,0.65 x,y 6,0.70 x bar 4 y bar...

2020 12 17一階RC低通濾波演算法原理與實現

羅伯特祥 2020 08 09 12 46 14 分類專欄 運動控制 linux 嵌入式 訊號處理 文章標籤 低通濾波器 rc濾波器 版權 一階濾波,又叫一階慣性濾波,或一階低通濾波,軟體實現rc低通濾波器的功能。y n x n 1 y n 1 y n x n 1 y n 1 y n x n 1 y...

演算法學習筆記之一階低通濾波演算法

一階濾波,又叫一階慣性濾波,或一階低通濾波。是使用軟體程式設計實現普通硬體rc低通濾波器的功能。一階低通濾波的演算法公式為 y n x n 1 y n 1 式中 濾波係數 x n 本次取樣值 y n 1 上次濾波輸出值 y n 本次濾波輸出值。一階低通濾波法採用本次取樣值與上次濾波輸出值進行加權,得...