Audio 归一化FFT数据(FFTW)

Audio 归一化FFT数据(FFTW),audio,signal-processing,fft,wav,fftw,Audio,Signal Processing,Fft,Wav,Fftw,我一直在使用FFTW计算规范化.wav文件数据的FFT。然而,对于如何使FFT输出正常化,我有点困惑。我一直在使用一种对我来说似乎很明显的方法,就是简单地除以最高的FFT幅度。但是,我已经看到了推荐的除法1/N和N/2(其中我假设N=FFT大小)。这些因素如何作为标准化因素发挥作用?在我看来,这些因素和实际数据之间似乎没有直观的联系——那么我遗漏了什么呢 非常感谢您在这方面提供的帮助。令人惊讶的是,FFT和IFFT没有统一的定义,至少在缩放方面是如此,但对于大多数实现(包括FFTW),您需要在正

我一直在使用FFTW计算规范化.wav文件数据的FFT。然而,对于如何使FFT输出正常化,我有点困惑。我一直在使用一种对我来说似乎很明显的方法,就是简单地除以最高的FFT幅度。但是,我已经看到了推荐的除法1/N和N/2(其中我假设N=FFT大小)。这些因素如何作为标准化因素发挥作用?在我看来,这些因素和实际数据之间似乎没有直观的联系——那么我遗漏了什么呢


非常感谢您在这方面提供的帮助。

令人惊讶的是,FFT和IFFT没有统一的定义,至少在缩放方面是如此,但对于大多数实现(包括FFTW),您需要在正向上缩放1/N,而在反向上没有缩放


通常(出于性能原因),您会希望将此比例因子与任何其他校正(如A/D增益、窗口增益校正因子等)结合在一起,以便只有一个组合比例因子应用于FFT输出箱。或者,如果您只是生成(比如)以dB为单位的功率谱,那么您可以将校正值设置为从功率谱箱中减去的单个dB值。

这对于参考FFT和其他需要有意义幅度的比较通常很有用。此外,任何单个峰值的高度都不是很有用,例如,取决于计算FFT时使用的窗口,因为这可以缩短和扩大峰值。出于这些原因,我建议不要使用最大峰值进行标准化,因为这样会失去任何与有意义震级的简单连接,以及数据集之间的简单比较等。

谢谢你的回复,Paul。我是DSP新手,可能是因为我缺乏数学背景导致了我的误解,但通过“归一化”,我理解了一个数据集乘以某个因子的过程,从而生成介于0和1之间的第二个数据集。这就是我自动选择最大震级作为因子的原因。但我看不出乘以1/N会如何使FFT数据在这种意义上“正常化”。。。或者我完全误解了吗?@ChrisM:对于FFT最常见的解释,如果输入信号在0..1范围内,那么输出值的范围是0..N,也就是说,存在一个N的比例因子。因此,要使输出数据正常化(在任何意义上),需要将其乘以1/N。我怀疑是这样的。非常感谢你的帮助。谢谢汤姆,一些有用的信息。