t = np.linspace(0, 5, 1000) signal = np.sin(2 * np.pi * 1.5 * t) + np.sin(2 * np.pi * 2.5 * t) signal += 0.5 * np.random.randn(1000)
时间: 2023-12-10 09:20:03 浏览: 54
这段代码生成了一个包含两个正弦波和高斯噪声的信号。首先,它使用`np.linspace`函数生成一个从0到5的数组`t`,该数组包含1000个元素。接下来,它使用`np.sin`函数生成两个正弦波信号:一个频率为1.5 Hz,另一个频率为2.5 Hz,它们的幅度都为1。然后,这两个信号被相加,得到一个包含两个频率成分的复合信号。最后,使用`np.random.randn`函数生成1000个服从标准正态分布的随机数,它们被乘以0.5后添加到信号中,以产生高斯噪声。
相关问题
signal = np.sin(2 * np.pi * 1.5 * t) + np.sin(2 * np.pi * 2.5 * t)去掉他的高斯噪声
可以使用滤波器对信号进行降噪。一种常用的滤波器是低通滤波器,可以去除高频噪声。下面是用 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` 函数对信号进行滤波。最终绘制了加噪声的原始信号和去噪后的信号。
解释这段代码t = np.linspace(0, 2*np.pi, 100) signal = np.sin(5*t) + np.cos(10*t) + np.random.normal(0, 1, 100)
这段代码首先使用了NumPy库中的linspace函数,生成了一个含有100个等距分布的数字的数组。这些数字是从0到2π的范围内生成的。然后使用NumPy的sin函数和cos函数分别计算出来sin(5t)和cos(10t)的值,并将它们相加。最后使用random.normal函数生成一个含有100个随机数的数组,这些随机数有一个均值为0、方差为1的正态分布。这个随机数数组会与sin(5t)和cos(10t)相加,生成最终的signal数组。