1/f噪声、蓝噪声的python生成代码
时间: 2024-01-21 08:02:16 浏览: 21
生成1/f噪声和蓝噪声的Python代码如下:
1. 1/f噪声代码:
```python
import numpy as np
def pink_noise(N):
# N: number of samples
x = np.random.randn(N)
X = np.fft.fft(x)
mag = np.abs(X)
mag_squared = mag**2
pink_mag = mag_squared / np.sum(mag_squared)
pink_mag[1:] += pink_mag[:0:-1]
pink_mag = np.sqrt(pink_mag)
pink_X = X * pink_mag
pink_noise = np.real(np.fft.ifft(pink_X))
return pink_noise
```
2. 蓝噪声代码:
```python
import numpy as np
def blue_noise(N):
# N: number of samples
x = np.random.randn(N)
X = np.fft.fft(x)
mag = np.abs(X)
mag_squared = mag**2
blue_mag = np.sqrt(mag_squared)
blue_X = X * blue_mag
blue_noise = np.real(np.fft.ifft(blue_X))
return blue_noise
```
这里使用了傅里叶变换来生成噪声。pink_noise函数生成1/f噪声,blue_noise函数生成蓝噪声。两个函数都接受一个参数N,表示生成的噪声的长度。在函数内部,使用numpy库生成高斯白噪声x,然后计算其傅里叶变换X和幅度谱mag。对于1/f噪声,将幅度谱平方mag_squared除以其和,得到归一化的幅度谱pink_mag。然后将幅度谱向右翻转并加上原幅度谱,得到双边幅度谱,再将其开方得到归一化后的幅度谱pink_mag。将X与pink_mag相乘得到新的傅里叶变换pink_X,然后使用逆傅里叶变换得到1/f噪声pink_noise。对于蓝噪声,直接将幅度谱开方得到归一化后的幅度谱blue_mag,将X与blue_mag相乘得到新的傅里叶变换blue_X,然后使用逆傅里叶变换得到蓝噪声blue_noise。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)