如何创建频率与时间的关系图?


9

我是化学工程师,而不是电子工程师,所以这有点困难。

我试图弄清楚如何获取幅度随时间变化的数据并将其转换为频率随时间变化的数据。我的本能是将数据切成块,对每个块执行FFT,然后绘制。不幸的是,由于每个切片的持续时间接近零,因此不再有足够的信息来获取准确的频率信息(低频需要的时间超过非常小的时间片)。所以...我该怎么做?我确定这是某人已经解决的著名问题。

这是我正在寻找的一种变换,以声波(钢琴音符G)为例进行说明。如您所见,该图为三个轴,第三个轴由颜色表示。

谢谢!

在此处输入图片说明

Answers:


5

时间与频率分辨率是一个众所周知的问题,确实有解决方法。对于音频信号,一些常用的技术包括:参数化方法;自适应分辨率(使用各种时间/频率配置进行分析,并将结果拼凑在一起-Wen X.和M. Sandler,“使用多重傅立叶变换的复合频谱图”);基于过度完备基的小波/分解; 并使用相位信息来提取频率峰值(IFgram)的精确位置。

但是,您显示的图形似乎没有使用其中的某些技术;所以我怀疑这不是您想要的。横轴上似乎有一些“污点”(例如,在t = 1.2s处),这肯定表明分析是在块之间有高度重叠的情况下完成的。

实际上,如果允许帧重叠,则块持续时间和每秒的分析帧数不必相互链接。因此,如果要使用40ms长的分析框架,则网格不必是:

框架1:t = 0..t = 40ms; 框架2:t = 40ms..t = 80ms

可能是:

框架1:t = 0..t = 40ms; 框架2:t = 10ms..t = 50ms

这种重叠可以在不减小FFT窗口大小的情况下给出更高的时间分辨率。请注意,这只能帮助在时间轴上准确定位事件-不能帮助解决两个时间上接近的事件...就像增加FFT大小可能有助于识别频率峰值的位置一样,但不能帮助确定频率峰值的位置。两个相邻频率峰值的分辨率。


您会怎么走(从频谱图转换为音频信号)
皮特2015年

4

是的,很多人都在进行时频分析。

“将我的数据切成块,对每个块执行FFT”的方法是一个好主意。在执行FFT之前,在每个块上应用“窗口函数”有助于避免许多伪像。允许块重叠也有帮助。经过这些调整后,您将获得Gabor变换,它似乎是最受欢迎的短时傅立叶变换(STFT)。

正如您已经指出的那样,正如Wikipedia文章所指出的那样,所有短时傅立叶变换技术都需要权衡:

  • 当你切的时间序列为很短的片段,你会得到非常精确的时间信息,究竟一个音的启动和停止,但频率信息是非常模糊的。
  • 当您将时间序列切成很长的片段时,您会获得有关音调确切频率的高精度频率信息,但是开始和停止的确切时间却很模糊。

这是一个著名的问题,但是,不仅没有解决它,而且还证明了两者之间的不确定性是不可避免的-Gabor极限,Heisenberg-Gabor极限,不确定性原理等。

如果您是我,我将从许多现成的库中的一个开始计算Gabor变换,然后尝试将时间序列切成各种长度。您很幸运会很幸运,最终您将获得一定的长度,可以提供足够的时间定位和足够的频率辨别力。

如果这不适用于该应用程序,那么我将继续使用其他方法进行时频表示时频分析 -小波变换,chirplet变换分数阶傅里叶变换(FRFT)等。

编辑:一些源代码从音频数据生成频谱图 / 瀑布图

图像到频谱图的方向与上述实用程序相反。


Gabor变换仅适用于高斯窗口。如果您使用其他窗口,则只是STFT。(而且真正的高斯窗口并不存在于数字中,因为它们会逐渐缩小到无穷大。)
endolith 2012年

@endolith:你是对的。Gabor变换使用的“高斯窗函数”被截短为有限的长度-与理想的高斯函数非常接近,但在数学上并不相同。
David Cary 2012年

我认为Gabor变换是使用积分的连续变换,因此它可以有一个非截断的高斯作为窗口吗?
endlith 2012年

@endolith:是的,原则上,一个人可以使用非截断的高斯作为窗口。在实践中,由于实际上高斯的所有能量都在中心峰的几个sigma之内,因此使用截断的窗口实际上总是在输出图中没有明显的不同。由于生成频谱图 瀑布图的软件会反复应用高斯窗口,然后对图表的每一列进行FFT,因此“不截断”将使该软件运行缓慢。
大卫·卡里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.