第四章 噪声

本章的“噪声”:一个信号中包含很多频率,这样它就没有周期信号的谐波结构了

4.1 不相关噪声

不相关均匀噪声(UU noise):“不相关”意思是各个值是相互独立的,知晓一个值不能得到其他值的信息,“均匀”意思是信号包含的随机值服从均匀分布

UncorrelatedUniformNoise继承与_Noise,而后者继承于Signal

class UncorrelatedUniformNoise(_Noise):
	def evaluate(self, ts):
		ys = np.random.uniform(-self.amp, self.amp, len(ts))
		return ys
signal = thinkdsp.UncorrelatedUniformNoise()
wave = signal.make_wave(duration=0.5, framerate=11025)
spectrum = wave.make_spectrum()
spectrum.plot_power()

spectrum.plot_power()绘制的是能量,它是振幅的平方

对一个噪声信号或者它的频谱,我们可能至少需要了解:

  • 分布:随机信号的分布是指可能值的集合和对应出现的可能性。
  • 相关性:信号的值在某个特定时间很高,我们希望它保持很高的水平,反之亦然。
  • 能量和频率的关系:频率的能量按照该频率绘制 P = k / f β P=k/f^{\beta} P=k/fβ

4.2 累积频率

def make_integrated_spectrum(self):
	cs = np.cumsum(self.power)
	cs /= cs[-1]
	return IntegratedSpectrum(cs, self.fs)
	class IntegratedSpectrum(object):
		def _init_(self, cs, fs):
			self.cs = cs
			self.fs = fs
integ = spectrum.make_integrated_spectrum()
integ.plot_power()

第四章 噪声
是一条直线,这意味着能量在所有的频率处的均值是一致的
白噪声:在所有频率出能量相等的噪声被称为白噪声

命名源于光,因为所有频率的可见光的均匀混合便是白色

4.3 布朗噪声

布朗噪声:其中各个值是前一个值域一个随机“步长”的和

命名源于布朗运动,颗粒在任意时间点的位置是所有以前步长的和

第四章 噪声
布朗噪声的功率谱斜率是-2(第9章)
l o g P = k − 2 l o g f log P = k - 2logf logP=k−2logf
P是功率,f是频率,k是线的截距
P = k / f 2 P = k/f^{2} P=k/f2

布朗噪声也称红噪,因为白噪,让可见光的功率正比于 1 / f 2 1/f^{2} 1/f2时,大部分功率会位于功率谱的低频段,也就是光谱的红色部分

4.4 粉噪

P = k / f β P = k/f^{\beta} P=k/fβ其中 β \beta β介于0和2之间称为粉噪
第四章 噪声

class PinkNoise(_Noise):
	def _init_(self, amp=1.0, beta=1.0):
		self.amp = amp
		self.beta = beta
	def make_wave(self, duration=1, start=0, framerate=11025):
		signal = UncorrelatedUniformNoise()
		wave = signal.make_wave(duration, start, framerate)
		spectrum = wave.make_spectrum()
		specturm.pink_filter(beta=self.beta)
		wave2 = spectrum.make_wave()#将过滤好的频谱转换回一个波形
		wave2.unbias()#居中
		wave2.normalize(self.amp)#归一化
		return wave2
	def pink_filter(self, beta=1.0):
		denom = self.fs ** (beta/2.0)#这里是对振幅操作所以是β/2,平方后是功率
		denom[0] = 1
		self.hs /= denom

4.5 高斯噪声

这才是人们常说的“白噪声”
不相关高斯(UG)噪声,UU噪声的频谱也是UG噪声

实际上,根据中心极限定理,任何不相关噪声的频谱大体上都是高斯性的,只要其分布的均值和标准差为有限制,且样本的数量很大。

np.random.normal返回Numpy数组,其值源于高斯分布

class UncorrelatedGaussianNoise(_Noise):
	def evaluate(self, ts):
		ys = np.random.normal(0, self.amp, len(ts))#均值0,标准差self.amp
		return ys
signal = thinkdsp.UncorrelatedGaussianNoise()
wave = signal.make_wave(duration=0.5, framerate=11025)
spectrum = wave.make_spectrum()
#“概率图”测试分布是否为高斯分布的图形化方法
thinkstats2.NormalProbabilityPlot(spectrum.real)
thinkstats2.NormalProbabilityPlot(spectrum.imag)

UG噪声有趣的属性:频谱的实数和虚数部分是互补相关的高斯值。
第四章 噪声

上一篇:[官网] 一个很好的 search rpm 或者是deb 包的网站


下一篇:解决 AndroidStudio Gradle 下载jar包慢