完全理解窗函数
一个星期终于搞懂了窗函数。以下为我的理解过程。
当输入一个信号x(t),我们需要截取它其中的一段来进行研究,就可以用加窗来实现,这里窗长就是截取长度。但因为之后我们会研究截取信号的频谱,需要对其进行傅里叶变换,而傅里叶变换又是作用于正负无穷的,所以要先对截取信号进行周期扩展。此时,若截取为整周期截取,周期扩展之后还是原信号,因此不会出现频谱泄露;若为非整周期截取,或信号根本就不是周期信号,截取信号不能表示整个信号,周期扩展之后信号的频谱会在每个周期相连的地方出现高次谐波,(高次谐波的产生可以大致地理解为周期扩展之后,时域上不再像原来一样连续,两个周期之间出现间断点,这个现象又叫Gibbs现象)这就是频谱泄露。这里可以延伸出一个如何选择窗函数来减小频谱泄露的问题。即要求窗函数频谱的主瓣尽量窄、旁瓣衰减尽量大。但二者不可兼得,因此要根据实际需求选择窗函数。主瓣越窄的窗函数的频率识别精度越高;旁瓣衰减越大的窗函数的幅度识别精度越高。对窗函数的用途有了大致了解之后,再来从原理上研究一下。
联想之前学过系统的单位冲击响应可以衡量系统特性,因此可以把窗函数看成一个系统,对它输入一个单位冲激信号,系统输出
h
(
t
)
h(t)
h(t)就是单位冲击响应。接下来研究系统频响,即将
h
(
t
)
h(t)
h(t)做傅里叶变换,经过变换可以得到系统的幅频响应和相频响应。通过幅频响应可以得到窗函数的截止频率,即可得到主瓣宽度。也可绘制对数幅度谱进行直观地观察。这里需要注意的是对数幅度谱的横坐标是归一化的频率,纵坐标是 :
20
l
o
g
20log
20log10
(
a
b
s
(
h
/
m
a
x
(
h
)
)
)
(abs(h/max(h)))
(abs(h/max(h)))
单位为
/
d
B
/dB
/dB。
h
h
h为系统频响,这里的函数
a
b
s
abs
abs不是求绝对值,而是求复数幅值的。对数变换的优点是可以让波动相对稳定,压缩变换范围,突出低频。
最后,对一个输入信号 x ( t ) x(t) x(t)(可以看成载波)加窗 w ( t ) w(t) w(t)(可以看成调制信号),相当于时域相乘, 频域卷积。
另外关于时间分辨率和频率分辨率的讲解见该文章:https://zhuanlan.zhihu.com/p/130387384