C語言中常見的濾波算法有移動平均濾波、中值濾波和卡爾曼濾波等。下面我給出一個移動平均濾波的實現示例。
移動平均濾波是一種簡單的濾波算法,它通過計算一段時間內的數據平均值來平滑信號。
示例代碼如下:
#define WINDOW_SIZE 5 // 窗口大小
float moving_average_filter(float input)
{
static float buffer[WINDOW_SIZE]; // 緩沖區
static int index = 0; // 緩沖區索引
static float sum = 0; // 緩沖區內數據的和
// 更新緩沖區
sum -= buffer[index];
buffer[index] = input;
sum += input;
// 移動索引
index++;
if (index >= WINDOW_SIZE) {
index = 0;
}
// 返回平均值
return sum / WINDOW_SIZE;
}
使用時,只需要將要濾波的數據作為參數傳入該函數,即可得到濾波后的結果。
float input_data = 10.0; // 輸入數據
float filtered_data = moving_average_filter(input_data); // 濾波后的數據
以上是一個簡單的移動平均濾波的實現,你可以根據需要調整窗口大小或選擇其他濾波算法來實現滿足具體需求的濾波功能。