输出一个按时间进行工作的滤波器,并调用
时间: 2024-03-17 11:47:29 浏览: 15
好的,以下是一个示例代码,可以按照时间进行工作的滤波器,并调用:
```python
import numpy as np
import matplotlib.pyplot as plt
def time_filter(signal, window_size):
"""
signal: 输入信号,一维数组
window_size: 窗口大小,整数,必须是奇数
"""
filtered_signal = []
for i in range(len(signal)):
if i < window_size // 2:
filtered_signal.append(signal[i])
elif i >= len(signal) - window_size // 2:
filtered_signal.append(signal[i])
else:
window_start = i - window_size // 2
window_end = i + window_size // 2
window = signal[window_start:window_end]
filtered_signal.append(np.mean(window))
return np.array(filtered_signal)
# 生成信号
t = np.linspace(0, 10, 1000)
noise = np.random.normal(0, 0.1, 1000)
signal = np.sin(2*np.pi*5*t) + np.sin(2*np.pi*10*t) + noise
# 滤波
filtered_signal = time_filter(signal, 21)
# 绘制结果
plt.plot(t, signal, 'b', label='Original signal')
plt.plot(t, filtered_signal, 'r', label='Filtered signal')
plt.legend()
plt.show()
```
这个示例代码生成了一个包含两个正弦波和噪声的信号,然后使用`time_filter`函数对信号进行滤波。滤波后,绘制了原始信号和滤波后的信号。可以看到,滤波后的信号消除了噪声,保留了原始信号的特征。