第三章 非周期信号

3.1 线性啁啾

啁啾:一种可变频率信号
Chirp:线性啁啾如何实现:
在这里插入图片描述
np.cumsum计算的是累计和,近似积分

3.2 指数啁啾

音程:两个音之间的感知差异

人类
我们感知两个音之间的音程,取决于他们之间的频率比例而不是差异
比如,220Hz和440Hz或440Hz和880Hz之间的音程都是一个八度,虽然后者频率差更大
我们对音高的认知符合频率的对数关系

指数啁啾:若想要感知音高线性增加,那么频率就要指数线性增加,这种形状的信号被称为指数啁啾
ExpoChirp:指数啁啾如何实现:

def evaluate(self, ts):
	start, end = np.log10(self.start), np.log10(self.end)
	freqs = np.logspace(start, end, len(ts)-1)
	return self._evaluate(ts, freqs)

3.3 啁啾信号的频谱

在这里插入图片描述

signal = thinkdsp.Chirp(start=220, end=440)
wave = signal.make_wave(duration=1)
spectrum = wave.make_spectrum()

频谱给出的是关于信号结构信息,但是不显示频率与时间的关系。

3.4 频谱图

短时傅里叶变换(STFT):将啁啾信号分解成小的部分,然后绘制出各个部分的频谱
在这里插入图片描述

3.5 Gabor限制

时间-频率分析的基础限制
频率分辨率:频谱个元素之间的频段,对应的是各单元的高度

计算:
长度片段n,频谱包含n/2个频率元素
如果帧率为r,则频谱中的最高频率范围为0~r/2
时间分辨率n/r
频率分辨率(r/2)/(n/2)=r/n

时间分辨率高,能让我们观察到频率的快速变化
频率分辨率高,我们才能观察到频率的微小变化
这两者不能同时满足

上图,每一列剑锋都被模糊到了大约2到3个单元,模糊的原因在于频谱图的分辨率有限制

signal = thinkdsp.Chirp(start=220, end=440)
wave = signal.make_wave(duration=1, framerate=11025)
spectrogram = wave.make_spectrogram(seg_length=512)
spectrogram.plot(high=700)

实例计算:
seg_length是每个片段的采样数量,取 2 n 2^{n} 2n时FFT效率更高
每个片段512帧,每秒有11 025帧,那每个片段的长度约为0.046s
从512帧中,得到256个频率元素,这些频率元素所在的范围为0~5512.5Hz,那各个元素之间的频带为21.6Hz

3.6 泄露

在这里插入图片描述
原因:离散傅里叶变换假设信号是周期性的,它隐含性地将信号的开始和结尾连接起来,构成一个环。如果不能平滑连接,这一不连续性就会创造出这一片段外的频率元素。
频谱泄漏:如中图,处理440Hz还有额外的频率元素,这种三步就称频谱泄漏,实际上是基频的能量泄露到了其它频率上了

3.7 加窗

“窗”:设计好的函数,变换非周期片段为周期片段处理,加窗作用平滑片段的开始和结束
种类:hamming/bartlett/blackman/kaiser

#Class Wave:
	def window(self, window):
		self.ys *= window
	window = np.hamming(len(wave))
	wave.window(window)

3.8 频谱图的实现

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值