请以以下要求写一段python代码(1) 生成一个长度300的一维数组,且数据大小为1到20内的随机整数。 (2) 查阅均值和中值滤波的原理进行上述的一维数组滤波,且窗口大小分别设定为3,7,11。说明不同大小窗口对滤波结果的影响。(此步骤自己写函数实现) (3) 把原数据和处理之后的数据画图显示。
时间: 2024-03-01 18:53:53 浏览: 66
Python 实现中值滤波、均值滤波的方法
5星 · 资源好评率100%
好的,下面是我的Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成一维数组
arr = np.random.randint(1, 21, size=300)
# 定义均值滤波函数
def mean_filter(arr, window_size):
filtered_arr = np.zeros_like(arr)
for i in range(len(arr)):
start = max(0, i - window_size // 2)
end = min(len(arr), i + window_size // 2 + 1)
filtered_arr[i] = np.mean(arr[start:end])
return filtered_arr
# 定义中值滤波函数
def median_filter(arr, window_size):
filtered_arr = np.zeros_like(arr)
for i in range(len(arr)):
start = max(0, i - window_size // 2)
end = min(len(arr), i + window_size // 2 + 1)
filtered_arr[i] = np.median(arr[start:end])
return filtered_arr
# 滤波窗口大小分别为3,7,11
window_sizes = [3, 7, 11]
# 画出原始数据和不同窗口大小的滤波结果
plt.figure(figsize=(15, 5))
plt.plot(arr, label='Original Data')
for window_size in window_sizes:
filtered_arr = mean_filter(arr, window_size)
plt.plot(filtered_arr, label=f'Mean Filter (Window Size = {window_size})')
filtered_arr = median_filter(arr, window_size)
plt.plot(filtered_arr, label=f'Median Filter (Window Size = {window_size})')
plt.legend()
plt.show()
```
这段代码会生成一个长度为300的一维数组,数据大小为1到20内的随机整数。然后,我们定义了均值滤波和中值滤波函数,并分别按照窗口大小为3、7、11来进行滤波。最后,我们将原始数据和不同窗口大小的滤波结果画出来,以便观察不同窗口大小对滤波结果的影响。
阅读全文