你能帮我理解逆傅里叶变换的工作吗?

时间:2013-12-09 22:51:59

标签: matlab transform fft inverse windowing

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

然后我可以对这些复数进行逆傅里叶变换(使用MATLAB的iFFT函数),我看到(并听到)我的原始信号几乎完全重建。这是我没有得到的。如果我用高音语音说'3',那么FFT应该(并且确实)表明能量存在于这个频率,但是它如何能够及时重建?即因为从FFT返回的所有内容都是一组幅度和相位,在这些信息中可以说明这些频率何时出现在时域信号中? MATLAB是否正在做一些我不知道的窗口?

非常感谢任何帮助。

干杯, 科林

2 个答案:

答案 0 :(得分:1)

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

参见例如here。在上部,你有一个方波脉冲,它显然是非常局部的。通过包含越来越多的正弦曲线,可以看出脉冲形状的精确度越来越高(除了不连续性,但这是另一个故事)。

答案 1 :(得分:0)

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