【问题标题】:Can you help me understand the inverse Fourier transform work? [closed]你能帮我理解傅里叶逆变换的工作吗? [关闭]
【发布时间】:2013-12-09 22:51:59
【问题描述】:
我正在尝试学习傅立叶变换,并使用 MATLAB 的 FFT 函数我可以将我说“1 2 3”的录音转换到频域。据我了解,生成的文件包含一组复数,其中包含原始信号中频率的幅度和相位。
然后我可以对这些复数执行傅里叶逆变换(使用 MATLAB 的 iFFT 函数),我看到(并听到)我的原始信号几乎完全重建。这是我不明白的一点。如果我用高音说“3”,FFT 应该(并且确实)显示该频率存在能量,但它如何及时重建它? IE。因为从 FFT 返回的只是一组幅度和相位,哪里有信息来说明这些频率何时出现在时域信号中? MATLAB 是否在做一些我不知道的窗口化?
任何帮助将不胜感激。
干杯,
科林
【问题讨论】:
标签:
matlab
transform
fft
inverse
windowing
【解决方案1】:
不涉及窗口。 FFT 为正弦波选择适当的幅度和相位,以便所有正弦波的总和给出信号的时间变化。
参见例如here。在上半部分,您有一个方形脉冲,它在时间上显然非常局部化。通过包含越来越多的正弦曲线可以看出,脉冲形状的近似精度越来越高(不连续处除外,但这是另一回事)。
【讨论】:
-
这很好地回答了您的问题,而您(thecolin)几乎正在回答您自己的问题。这里的关键词是重构,这意味着只使用一系列复指数——一种“压缩”/不同的描述信息的方式,将信号尽其所能地重新组合在一起。再现的信号永远不会相同,但它足够接近,您的耳朵不会听到任何差异。这是另一个我认为具有说明性的动画。 en.wikipedia.org/wiki/…
【解决方案2】:
如果您只对整个声音样本进行单个 FFT(顺便说一句,这不是您通常会做的事情 - 通常您会使用一系列重叠的 STFT 来捕获随时间变化的频谱内容),那么整个样本是将其视为周期性波形。任何明显的时变内容仅仅是许多分量的幅度和相位组合以重构原始信号的方式的结果。