使用c语言写一个平滑滤波算法
时间: 2023-09-07 18:11:57 浏览: 259
平滑滤波算法是一种常用的信号处理方法,用于去除信号中的噪声。以下是使用c语言编写的一个简单的平滑滤波算法:
```c
#include <stdio.h>
#define N 10 // 数组长度
int main() {
int data[N] = {2, 5, 7, 10, 12, 15, 18, 20, 22, 25}; // 原始数据
int filtered_data[N] = {0}; // 平滑后的数据
int i, j;
// 对每个数据点进行平滑
for (i = 0; i < N; i++) {
int sum = 0;
int count = 0;
// 计算该数据点周围的平均值
for (j = i - 2; j <= i + 2; j++) {
if (j >= 0 && j < N) { // 确保不越界
sum += data[j];
count++;
}
}
// 计算平均值并保存到新数组
filtered_data[i] = sum / count;
}
// 输出结果
printf("原始数据:");
for (i = 0; i < N; i++) {
printf("%d ", data[i]);
}
printf("\n平滑后的数据:");
for (i = 0; i < N; i++) {
printf("%d ", filtered_data[i]);
}
return 0;
}
```
该算法中,使用一个长度为5的窗口(即周围5个数据点),计算该数据点周围的平均值,然后将平均值保存到新数组中,以得到平滑后的数据。该算法的时间复杂度为O(N^2),但是对于本例中的小数组来说,影响不大。
阅读全文