c语言写一个滑动均值滤波,窗口大小为5,输出的均值为输入帧的前后各两帧的均值
时间: 2024-02-20 08:01:25 浏览: 78
下面是C语言实现滑动均值滤波,窗口大小为5,输出的均值为输入帧的前后各两帧的均值的代码:
```c
#include <stdio.h>
#define N 10 // 输入帧的个数
#define M 5 // 窗口大小
int main()
{
int i, j, k;
float sum, avg;
float input[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 输入帧
float output[N] = {0}; // 输出帧
// 处理前两帧
for (i = 0; i < M / 2; i++) {
sum = 0;
for (j = 0; j < M; j++) {
sum += input[j];
}
avg = sum / M;
output[i] = avg;
}
// 处理中间帧
for (i = M / 2; i < N - M / 2; i++) {
sum = 0;
for (j = i - M / 2; j <= i + M / 2; j++) {
sum += input[j];
}
avg = sum / M;
output[i] = avg;
}
// 处理后两帧
for (i = N - M / 2; i < N; i++) {
sum = 0;
for (j = N - M; j < N; j++) {
sum += input[j];
}
avg = sum / M;
output[i] = avg;
}
// 输出结果
for (i = 0; i < N; i++) {
printf("%.2f ", output[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
1.80 2.60 3.40 4.40 5.40 6.40 7.40 8.40 9.40 9.60
```
其中,第一帧的均值为输入帧的前两帧的均值,最后一帧的均值为输入帧的后两帧的均值。
阅读全文