用C语言写一个平滑滤波的程序
时间: 2023-10-09 07:15:08 浏览: 447
以下是用C语言编写的一个简单的平滑滤波程序示例:
```c
#include <stdio.h>
// 定义函数进行平滑滤波
void smoothFilter(int input[], int output[], int size) {
output[0] = input[0]; // 第一个元素不需要平滑,直接复制
// 对中间元素进行平滑滤波
for (int i = 1; i < size - 1; i++) {
output[i] = (input[i - 1] + input[i] + input[i + 1]) / 3;
}
output[size - 1] = input[size - 1]; // 最后一个元素不需要平滑,直接复制
}
int main() {
int input[] = {2, 4, 6, 8, 10};
int size = sizeof(input) / sizeof(input[0]);
int output[size];
// 调用平滑滤波函数
smoothFilter(input, output, size);
// 输出结果
printf("平滑滤波前的数组:");
for (int i = 0; i < size; i++) {
printf("%d ", input[i]);
}
printf("\n平滑滤波后的数组:");
for (int i = 0; i < size; i++) {
printf("%d ", output[i]);
}
return 0;
}
```
以上代码实现了一个简单的平滑滤波程序。程序通过 `smoothFilter` 函数对输入数组进行平滑滤波,并将结果存储在输出数组中。平滑滤波的原理是将每个元素的值替换为它自身与相邻元素的平均值。在本例中,中间元素的平均值是由它自身、前一个元素和后一个元素相加后再除以3得到的。第一个元素和最后一个元素不需要进行平滑处理,直接复制到输出数组中。
在 `main` 函数中,定义了输入数组 `input` 和输出数组 `output`,并调用 `smoothFilter` 函数进行平滑滤波。最后,使用循环遍历输入数组和输出数组,并将它们的元素依次输出。运行程序,将会得到平滑滤波前和平滑滤波后的数组值。
阅读全文