为什么 FFT 大小等于时域中的样本数?

Why does FFT size equals the numbers of samples in the time domain?

我的问题很简单。我想我有点了解 FFT 和 DFT。我不明白的是,为什么在 Python 或 matlab 中,我们使用 FFT 大小作为样本数?为什么在时域中获取的每个样本都对应于频域中的频率仓。

例如 Scipy 的 fft 包,为了绘制 .wav 文件信号的频谱,我们使用:

FFT = abs(scipy.fftpack.fft(time_domain_signal));
Frequency_Vector = fftpack.fftfreq(len(FFT_out), (1/Sampling_rate))

现在如果我输入 len(FFT_out)

它与样本数(即音频信号的采样频率*时间)相同,并且由于ffreq是包含频率仓的频率向量,因此Len(fft) =频率仓数。

一个简单的解释将不胜感激。

傅里叶变换在数学上的一个关键属性是它是线性的和可逆的。后者意味着如果两个信号具有相同的傅立叶变换,则它们是相等的,并且对于任何频谱都存在具有该频谱的信号。

对于信号样本有限集合的实现,第一个 属性 意味着傅立叶变换可以用 N x M 矩阵表示,其中 N 是时间样本的数量,M 是时间样本的数量频率样本。第二个属性表示矩阵必须是可逆的,所以方阵,即我们必须有M == N。

你说时间段和频率是对应的,从它们的数量相同的意义上来说,这是正确的。然而,每个频率仓中的值将取决于所有时间值。