我有一个程序可以绘制信号的频谱分析(Amp/Freq),这几乎是 DFT 转换为极性的。但是,这并不完全是 winamp(右上角)或任何其他音频软件绘制的图表。我不确定这种图叫什么(如果它有一个不同的名称),所以我不确定要寻找什么。
我对频率轴以两个指数为底非常积极,但幅度轴让我感到困惑。
任何指针?
我有一个程序可以绘制信号的频谱分析(Amp/Freq),这几乎是 DFT 转换为极性的。但是,这并不完全是 winamp(右上角)或任何其他音频软件绘制的图表。我不确定这种图叫什么(如果它有一个不同的名称),所以我不确定要寻找什么。
我对频率轴以两个指数为底非常积极,但幅度轴让我感到困惑。
任何指针?
实际上是一个有趣的问题。我知道你在说什么; 频率轴肯定是对数的。但是幅度呢?作为对另一张海报的回应,幅度不能仅以 dB 为单位,因为 dB 没有零的概念。这引入了量化误差、SNR 和动态范围的概念。
假设接收到的数字化(即离散时间和离散幅度)时域信号 x[n] 等于 s[n] + e[n],其中 s[n] 是传输的离散时间信号(即,连续幅度)和 e[n] 是量化误差。假设 x[n] 用 b 位表示,为简单起见,取 [0,1) 中的值。那么e[n]的最大峰峰值幅度是一个量化级别,即2^{-b}。
动态范围定义为,以分贝为单位,20 log10 (max peak-to-peak |s[n]|)/(max peak-to-peak |e[n]|) = 20 log10 1/(2 ^{-b}) = 20b log10 2 = 6.02b dB。对于 16 位音频,动态范围为 96 dB。对于 8 位音频,动态范围为 48 dB。
那么 Winamp 如何绘制振幅呢?我的猜测:
假设最小幅度为-6.02b dB,最大幅度为0 dB。在视觉上,Winamp 在绘制窗口时考虑了这些阈值。
使用另一个非线性映射,例如 log(1+X)。这个函数总是非负的,当 X 很大时,它近似于 log(X)。
还有其他知道的高手吗?让我知道你的想法。我也很感兴趣,这到底是如何实现的。
要生成功率谱,您需要执行以下步骤:
10 * log10(re * re + im * im)
)这给出了对数幅度(即 dB)与线性频率的关系。
如果您还想要一个对数频率标度,那么您将需要从适当的 bin 范围内累积幅度(并且您将需要一个相当大的 FFT 开始)。
你需要的是功率谱图。您必须计算信号当前窗口的 DFT。然后对每个值进行平方。
好吧,我不是 100% 确定你的意思,但肯定它只是从 FFT 中存储数据?
如果你想获得这样的数据(对于 44Khz 文件)频率点为 22Khz、11Khz 5.5Khz 等,那么你可以使用小波分解,我猜......
这个线程可能会帮助你一点......
与我猜想的频谱图相同的信息......