在数据处理的时候,经常会遇到噪声。一般的噪声是一种功率谱密度为常数的随机信号或随机过程,即白噪声。白噪声的由来是由于白光是由各个频率的单色光混合而成,因为此信号的平均功率谱性质成为“白”,此信号也就是白噪声。理想的白噪声具有无限带宽,因而其能量是无限大,这在现实世界是不可能存在的。实际上,人常常将有限带宽的平整信号视为白噪声,以方便进行数学分析。白噪声具有以下特点:
- 数学期望为0:
μ n = E { n ( t ) } = 0 \mu_n=E\{n(t)\}=0 μn=E{n(t)}=0
# 代码测试:
import numpy as np
noise = np.random.rand(0, 1, 100000)
mean = np.mean(noise)
print(mean)
0.004019681758208514 # 这里之所以不为0,即上文说的,只要带宽足够,就是理想的白噪声。
- 自相关函数为狄拉克函数
r n n = E { n ( t ) n ( t − τ ) } = δ ( τ ) r_{nn} = E\{n(t)n(t-\tau)\}=\delta(\tau) rnn=E{n(t)n(t−τ)}=δ(τ)
# 代码测试
import imageio
import numpy as npnums = np.arange(10, 100000, 1000)
for num in nums:noise = np.random.normal(0, 1, num)corr = np.correlate(noise, noise, mode='full')plt.plot(corr)plt.savefig('figs/fig%d.png'%num)plt.close()with imageio.get_write('mygif.gif', mode='I') as writer:for num in nums:image = imageio.imread('figs/fig%d/png%num)write.append_data(image)
图像结果:
上图是狄拉克函数。
- 功率谱密度是平的
import matplotlib.pyplot as plt
noise = np.random.rand(0, 1, 100000)
plt.psd(noise, 1000)
plt.savefig('image.png', dpi=300)
结果如下: