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 本次濾波輸出值。一階低通濾波法採用本次取樣值與上次濾波輸出值進行加權,得...