0

我正在尝试了解傅里叶变换并使用 MATLAB FFT 函数我可以将我说“1 2 3”的录音转换为频域。据我了解,生成的文件包含一组复数,它们保存原始信号中频率的幅度和相位。

然后,我可以对这些复数执行傅里叶逆变换(使用 MATLAB 的 iFFT 函数),我看到(并听到)我的原始信号几乎被完美地重建了。这是我不明白的一点。如果我用高音说“3”,FFT 应该(并且确实)显示该频率存在能量,但它如何及时重建它?即,由于从 FFT 返回的所有内容都是一组幅度和相位,因此这些频率何时出现在时域信号中的信息在哪里?MATLAB 是否在做一些我不知道的窗口?

任何帮助将非常感激。

干杯,科林

4

2 回答 2

1

不涉及窗口。FFT 为正弦曲线选择适当的幅度和相位,以便所有正弦曲线的总和给出信号的时间变化。

例如,请参见此处。在上半部分,您有一个方形脉冲,它在时间上显然非常局部化。通过包含越来越多的正弦曲线,可以看出脉冲形状的近似精度越来越高(不连续处除外,但这是另一回事)。

于 2013-12-09T23:15:55.877 回答
0

如果您只对整个声音样本进行单个 FFT(这不是您通常会做的,顺便说一句 - 通常您会使用一系列重叠的 STFT 来捕获随时间变化的频谱内容),那么整个样本将被视为这是一个周期性的波形。任何明显的时变内容仅仅是许多分量的幅度和相位组合以重构原始信号的方式的结果。

于 2013-12-09T23:02:52.970 回答