Jef*_*Lai 17 python audio signal-processing
我想使用Python生成不同颜色的噪声,就像维基百科提到的那样: https: //en.wikipedia.org/wiki/Colors_of_noise。
例如,白色、粉色、布朗、蓝色和紫色噪声。并希望有类似的频谱,就像网站一样。
如果我可以调整一些参数来完成它,那将是一个很大的帮助。任何链接或提示将不胜感激!多谢。
Bob*_*Bob 25
让我们使用 numpy 计算噪声并使用 matplotlib 绘制结果
import numpy as np
import matplotlib.pyplot as plt
def plot_spectrum(s):
f = np.fft.rfftfreq(len(s))
return plt.loglog(f, np.abs(np.fft.rfft(s)))[0]
Run Code Online (Sandbox Code Playgroud)
这是 python 装饰器的一个很好的用例
import numpy as np
import matplotlib.pyplot as plt
def plot_spectrum(s):
f = np.fft.rfftfreq(len(s))
return plt.loglog(f, np.abs(np.fft.rfft(s)))[0]
Run Code Online (Sandbox Code Playgroud)
该函数PSDGenrator将一个函数作为输入并返回另一个函数,该函数将产生一个随机信号,其功率谱根据给定函数进行整形。
该线S = S / np.sqrt(np.mean(S**2))确保有色噪声保留白噪声的能量。
我们来测试一下
def noise_psd(N, psd = lambda f: 1):
X_white = np.fft.rfft(np.random.randn(N));
S = psd(np.fft.rfftfreq(N))
# Normalize S
S = S / np.sqrt(np.mean(S**2))
X_shaped = X_white * S;
return np.fft.irfft(X_shaped);
def PSDGenerator(f):
return lambda N: noise_psd(N, f)
@PSDGenerator
def white_noise(f):
return 1;
@PSDGenerator
def blue_noise(f):
return np.sqrt(f);
@PSDGenerator
def violet_noise(f):
return f;
@PSDGenerator
def brownian_noise(f):
return 1/np.where(f == 0, float('inf'), f)
@PSDGenerator
def pink_noise(f):
return 1/np.where(f == 0, float('inf'), np.sqrt(f))
Run Code Online (Sandbox Code Playgroud)
小智 5
python 中有一个处理彩色噪声的库
\nhttps://pypi.org/project/colorednoise/
\n!pip install colorednoise\nimport colorednoise as cn\nfrom matplotlib import pylab as plt\n\n#input values\nbeta = 0 # the exponent: 0=white noite; 1=pink noise; 2=red noise (also "brownian noise")\nsamples = 2**16 # number of samples to generate (time series extension)\n\n#Deffing some colores\nA = cn.powerlaw_psd_gaussian(beta, samples)\n\n#Ploting first subfiure\nplt.plot(A, color=\'black\', linewidth=1)\nplt.title(\'Colored Noise for \xce\xb2=\'+str(beta))\nplt.xlabel(\'Samples (time-steps)\')\nplt.ylabel(\'Amplitude(t)\', fontsize=\'large\')\nplt.xlim(1,5000)\nplt.show()\nRun Code Online (Sandbox Code Playgroud)\n\n
| 归档时间: |
|
| 查看次数: |
12751 次 |
| 最近记录: |