python 向正弦波添加噪声
时间: 2023-06-29 20:05:41 浏览: 320
可以使用numpy库和matplotlib库来生成正弦波并添加噪声。以下是一个简单的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成正弦波
time = np.arange(0, 10, 0.1)
amplitude = np.sin(time)
# 添加噪声
noise = np.random.normal(0, 0.1, len(time))
amplitude_noise = amplitude + noise
# 绘制图形
plt.plot(time, amplitude, label="Original")
plt.plot(time, amplitude_noise, label="With Noise")
plt.legend()
plt.show()
```
在这个示例中,我们使用numpy的arange函数生成0到10之间,步长为0.1的一组时间点,然后使用numpy的sin函数生成对应的正弦波。接着,使用numpy的normal函数生成均值为0、标准差为0.1的一组噪声,并将其加到原始波形上,得到带噪声的波形。最后,使用matplotlib的plot函数将两个波形绘制在同一张图上,方便比较。
相关问题
使用python生成正弦信号并添加标准白噪声
生成正弦信号可以使用Python中的NumPy库中的sin函数,添加标准白噪声可以使用NumPy库中的random.normal函数。以下是代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 设置参数
fs = 1000 # 采样频率
f = 50 # 正弦信号频率
amp = 1 # 正弦信号幅度
duration = 1 # 信号持续时间
# 生成时间序列
t = np.arange(0, duration, 1/fs)
# 生成正弦信号
x = amp * np.sin(2*np.pi*f*t)
# 生成标准白噪声
noise = np.random.normal(0, 1, len(x))
# 添加噪声
x_noise = x + noise
# 绘制图像
plt.plot(t, x_noise)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.show()
```
在上述代码中,我们首先设置了采样频率、信号频率、信号幅度和信号持续时间等参数。然后,利用np.arange函数生成时间序列,再使用np.sin函数生成正弦信号。接着,使用np.random.normal函数生成标准白噪声,最后将噪声添加到正弦信号上。最终,使用matplotlib库中的plot函数绘制出信号的波形图。
python实现图像添加正弦噪声
可以使用Python的NumPy和OpenCV库来添加正弦噪声。具体的步骤如下:
1. 导入需要的库
```python
import cv2
import numpy as np
```
2. 读取图片并转换为灰度图像
```python
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
3. 生成正弦噪声
```python
height, width = gray.shape
freq = 10 # 正弦波频率
amplitude = 50 # 正弦波振幅
noise = amplitude * np.sin(2 * np.pi * freq * np.arange(width) / width)
```
4. 将正弦噪声加入图像中
```python
for i in range(height):
gray[i, :] += noise.astype(np.uint8)
```
5. 显示加入噪声后的图像
```python
cv2.imshow('image', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
完整代码:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
height, width = gray.shape
freq = 10 # 正弦波频率
amplitude = 50 # 正弦波振幅
noise = amplitude * np.sin(2 * np.pi * freq * np.arange(width) / width)
for i in range(height):
gray[i, :] += noise.astype(np.uint8)
cv2.imshow('image', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
```