如何正确地将数组绘制成谱图

我已经获得了每个时间和频率的二维振幅阵列。 但是,绘制频谱图时,像素强度应根据幅度水平(例如,红色最高的绿色最低)。

(我得到了FFT和sqrt(real ^ 2 + img ^ 2)的幅度)

首先我把它转换成对数刻度10 * log10(幅度^ 2)(*我不知道如何管理放大器为0时,没有错误出现)

然后,我只需找到Mix_amp并将所有元素缩放到0-1之间。

问题是。 当从无噪声声音产生一个声谱图,就像计算机产生的扫描声音从20-20kHz时,我得到了一个很好的向上的直线。 但是,对于实际的歌曲,谱图的特征似乎不够明显,因此当我想要为后期阶段应用峰值搜索时,它会变得很困难。

我为流程做了些什么不对吗?


你可能在真歌中找不到单峰。

即和弦具有3个或更多基本音调+每个基音的谐波。

多个乐器也可能以不同的强度演奏不同的音调。

窗口内的最大功率不是通过总功率来归一化的。 如果频率中包含的功率的x%多于您找到的峰值。

如果你有密调,你需要处理频谱泄漏。 使用适当的窗口和/或更大的FFT可能有助于区分。

链接地址: http://www.djcxy.com/p/33845.html

上一篇: How to properly nomalisation an array to plot spectrogram

下一篇: Calculating The Average Amplitude of an Audio File Using FFT in Javascript