2

我了解 DFT 的复杂输出包含离散频率的“幅度”和“相位”信息。

Amplitude[n] = sqrt((r[n]*r[n]) + (i[n]*i[n]))
Phase[n] = (atan2(i[n],r[n]))
Frequency[n] = n * (sample_rate / (fft_input_length / 2))

似乎我应该能够使用频率、幅度和相位信息来计算每个输出箱的幅度,就好像相应频率的输入在 FFT 输入中具有零相位对齐一样。但我正在画一个空白。


嗯,深入研究我的问题,我发现无论输入如何,FFT 输出的虚数始终为 0.0。所以我猜我的代码有缺陷或者算法不是我需要的。

4

1 回答 1

2

如果您想将所有 DFT 结果 bin 旋转到参考起始点(样本 0)的零相位:设置 r[n] =amplitude[n], i[n] = 0; 如果您想要严格的真实数据,请确保 r[n] 在整个 DFT 长度上是对称的;并在需要时计算 IDFT。

于 2012-12-08T18:58:25.600 回答