signal = np.sin(2 * np.pi * 1.5 * t) + np.sin(2 * np.pi * 2.5 * t)去掉他的高斯噪声
时间: 2023-09-07 20:14:37 浏览: 228
可以使用滤波器对信号进行降噪。一种常用的滤波器是低通滤波器,可以去除高频噪声。下面是用 Python 中的 scipy 库实现的示例代码:
```python
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
# 生成信号
t = np.linspace(0, 1, 1000, endpoint=False)
s = np.sin(2 * np.pi * 1.5 * t) + np.sin(2 * np.pi * 2.5 * t)
# 添加高斯噪声
noise = np.random.normal(0, 0.1, 1000)
s_noisy = s + noise
# 设计低通滤波器
cutoff_freq = 3 # 截止频率
b, a = signal.butter(4, 2 * cutoff_freq / 1000, 'low')
# 滤波
s_filtered = signal.filtfilt(b, a, s_noisy)
# 绘制图像
plt.plot(t, s_noisy, label='Noisy signal')
plt.plot(t, s_filtered, label='Filtered signal')
plt.legend()
plt.show()
```
上述代码中,我们使用了 `signal.butter` 函数设计了一个 4 阶低通滤波器,截止频率为 3 Hz。然后使用 `signal.filtfilt` 函数对信号进行滤波。最终绘制了加噪声的原始信号和去噪后的信号。
阅读全文