中位值平均滤波算法代码
时间: 2023-07-03 07:26:59 浏览: 59
以下是中位值平均滤波算法的 Python 代码实现:
```
def median_filter(data, window_size):
"""
中位值平均滤波算法
:param data: 待滤波的数据,类型为List
:param window_size: 窗口大小,类型为int
:return: 滤波后的数据,类型为List
"""
filtered_data = []
half_size = window_size // 2
for i in range(half_size, len(data) - half_size):
window = data[i - half_size:i + half_size + 1]
window.sort()
filtered_data.append(sum(window) // window_size)
return filtered_data
```
其中,参数 `data` 是待滤波的数据,类型为列表;参数 `window_size` 是窗口大小,类型为整数。函数返回滤波后的数据,类型为列表。
相关问题
滑动平均滤波算法代码
滑动平均滤波算法是一种常用的信号滤波算法,其主要思想是通过取样信号的移动平均值来减少噪声对信号的影响。下面是一个简单的滑动平均滤波算法的示例代码:
```
#define N 10 // 采样数据个数
int data[N]; // 采样数据
int windowSize = 5; // 窗口大小
void slidingAverageFilter() {
int sum = 0;
for (int i = 0; i < windowSize; i++) {
sum += data[i];
}
int average = sum / windowSize;
for (int i = windowSize; i < N; i++) {
sum -= data[i - windowSize];
sum += data[i];
int average = sum / windowSize;
// 进行处理操作,比如输出平均值
printf("The average is: %d\n", average);
}
}
```
在这个示例代码中,我们首先定义了一个包含 N 个采样数据的数组 data。然后定义了一个窗口大小 windowSize,用于计算移动平均值。接着我们遍历前 windowSize 个采样数据,求出它们的和并计算平均值。然后我们再从第 windowSize 个采样数据开始遍历,每次移动一个采样数据并重新计算平均值。最后我们可以对平均值进行处理,比如输出。
中位值平均滤波算法C代码
以下是中位值平均滤波算法的C代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 11 // 数据长度
int data[N] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110 }; // 原始数据
int compare(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int i, j, k;
int windowSize = 3; // 窗口大小
int *window = (int*)malloc(windowSize * sizeof(int)); // 窗口数组
int result[N - windowSize + 1]; // 过滤后的数据
for (i = 0; i <= N - windowSize; i++) {
// 从原始数据中取出窗口大小的数据
for (j = i, k = 0; j < i + windowSize; j++, k++) {
window[k] = data[j];
}
// 对窗口数据进行排序
qsort(window, windowSize, sizeof(int), compare);
// 取中位数作为过滤后的数据
result[i] = window[windowSize / 2];
}
// 输出过滤后的数据
for (i = 0; i < N - windowSize + 1; i++) {
printf("%d ", result[i]);
}
printf("\n");
free(window); // 释放窗口数组
return 0;
}
```
注:该算法的窗口大小和原始数据需要根据实际情况进行调整。