数字滤波器(中值滤波)的设计用C语言完成
时间: 2024-03-01 16:49:34 浏览: 25
好的,我可以为您提供一个简单的中值滤波器设计的 C 语言代码,以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define WINDOW_SIZE 3 // 滤波窗口大小
int main()
{
int input[] = {1, 5, 3, 2, 8, 9, 10, 4, 6, 7}; // 待滤波的原始输入信号
int output[10]; // 滤波后的输出信号
int window[WINDOW_SIZE]; // 滤波窗口
int i, j, median, temp;
// 滤波循环
for (i = 0; i < 10; i++)
{
// 将滤波窗口中的数据向前移动一位
for (j = WINDOW_SIZE - 1; j > 0; j--)
{
window[j] = window[j - 1];
}
// 将当前输入信号放入滤波窗口
window[0] = input[i];
// 对滤波窗口中的数据进行排序
for (j = 0; j < WINDOW_SIZE; j++)
{
for (int k = j + 1; k < WINDOW_SIZE; k++)
{
if (window[j] > window[k])
{
temp = window[j];
window[j] = window[k];
window[k] = temp;
}
}
}
// 计算中值
median = window[WINDOW_SIZE / 2];
// 将中值作为输出信号
output[i] = median;
}
// 打印输出信号
for (i = 0; i < 10; i++)
{
printf("%d ", output[i]);
}
return 0;
}
```
以上代码是一个简单的中值滤波器设计的 C 语言代码,您可以根据您的具体需求进行修改。