移動平均濾波是一種簡單有效的平滑信號的方法,它通過計算一系列數據點的平均值來減小信號中的波動。基本的移動平均濾波方法有兩種:簡單移動平均(SMA)和指數加權移動平均(EWMA)。
簡單移動平均濾波(SMA)的原理:
簡單移動平均濾波通過計算一定窗口內數據點的平均值來平滑信號。窗口的大小決定了濾波器對信號的平滑程度,窗口越大,平滑效果越明顯。對于第n個數據點(X_n),其簡單移動平均值(SMA_n)可以計算為:
其中,K是窗口大小。
簡單移動平均濾波的C代碼示例:以下是一個簡單移動平均濾波的C代碼示例,假設輸入數據存儲在數組中:
#include
#define WINDOW_SIZE 5
// 函數原型float simpleMovingAverage(float data[], int dataSize);
int main() { // 輸入數據 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);
// 打印結果 printf("Simple Moving Average: %f\n", result);
return 0;}
// 計算簡單移動平均float simpleMovingAverage(float data[], int dataSize) { float sum = 0.0;
// 計算窗口內數據的和 for (int i = 0; i < WINDOW_SIZE; ++i) { sum += data[i]; }
// 計算移動平均值 float movingAverage = sum / WINDOW_SIZE;
// 返回結果 return movingAverage;}
在這個示例中,WINDOW_SIZE 定義了移動平均的窗口大小,可以根據需要調整。simpleMovingAverage 函數用于計算輸入數據的簡單移動平均值。這只是一個基本的示例,實際應用中可能需要根據具體需求進行調整和優化。
-
濾波
+關注
關注
10文章
669瀏覽量
56773 -
信號
+關注
關注
11文章
2804瀏覽量
77102 -
C代碼
+關注
關注
1文章
89瀏覽量
14356
發布評論請先 登錄
相關推薦
中位值平均濾波法相關資料分享
加權遞推平均濾波法是什么
非局部平均濾波——NL-Menas的算法理論
![非局部<b class='flag-5'>平均</b><b class='flag-5'>濾波</b>——NL-Menas的算法理論](https://file.elecfans.com/web2/M00/0F/3F/pYYBAGESIayAS5zHAAAui9oz8K0688.png)
評論