移動平均濾波是一種簡單有效的平滑信號的方法,它通過計算一系列數(shù)據(jù)點的平均值來減小信號中的波動。基本的移動平均濾波方法有兩種:簡單移動平均(SMA)和指數(shù)加權(quán)移動平均(EWMA)。
簡單移動平均濾波(SMA)的原理:
簡單移動平均濾波通過計算一定窗口內(nèi)數(shù)據(jù)點的平均值來平滑信號。窗口的大小決定了濾波器對信號的平滑程度,窗口越大,平滑效果越明顯。對于第n個數(shù)據(jù)點(X_n),其簡單移動平均值(SMA_n)可以計算為:
其中,K是窗口大小。
簡單移動平均濾波的C代碼示例:以下是一個簡單移動平均濾波的C代碼示例,假設(shè)輸入數(shù)據(jù)存儲在數(shù)組中:
#include
#define WINDOW_SIZE 5
// 函數(shù)原型float simpleMovingAverage(float data[], int dataSize);
int main() { // 輸入數(shù)據(jù) float inputData[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; int dataSize = sizeof(inputData) / sizeof(inputData[0]);
// 計算簡單移動平均 float result = simpleMovingAverage(inputData, dataSize);
// 打印結(jié)果 printf("Simple Moving Average: %f\n", result);
return 0;}
// 計算簡單移動平均float simpleMovingAverage(float data[], int dataSize) { float sum = 0.0;
// 計算窗口內(nèi)數(shù)據(jù)的和 for (int i = 0; i < WINDOW_SIZE; ++i) { sum += data[i]; }
// 計算移動平均值 float movingAverage = sum / WINDOW_SIZE;
// 返回結(jié)果 return movingAverage;}
在這個示例中,WINDOW_SIZE 定義了移動平均的窗口大小,可以根據(jù)需要調(diào)整。simpleMovingAverage 函數(shù)用于計算輸入數(shù)據(jù)的簡單移動平均值。這只是一個基本的示例,實際應(yīng)用中可能需要根據(jù)具體需求進(jìn)行調(diào)整和優(yōu)化。
-
濾波
+關(guān)注
關(guān)注
10文章
671瀏覽量
56888 -
信號
+關(guān)注
關(guān)注
11文章
2819瀏覽量
77384 -
C代碼
+關(guān)注
關(guān)注
1文章
90瀏覽量
14442
發(fā)布評論請先 登錄
相關(guān)推薦
卡爾曼濾波C代碼
中位值平均濾波法相關(guān)資料分享
加權(quán)遞推平均濾波法是什么
什么是限幅平均濾波法
移動硬盤的平均尋道時間
淺談移動平均濾波器C實現(xiàn)設(shè)計

非局部平均濾波——NL-Menas的算法理論

評論