8

我在数学课上了解了傅立叶变换,并认为我已经理解了它们。现在,我正在尝试使用 R(统计语言)并在实践中解释离散 FFT 的结果。这就是我所做的:

x = seq(0,1,by=0.1)
y = sin(2*pi*(x))

calcenergy <- function(x) Im(x) * Im(x) + Re(x) * Re(x)

fy <- fft(y)
plot(x, calcenergy(fy))

并得到这个情节:

sin(2*pi*(x)) 从 0 到 1 的能量密度谱,步长为 0.1

如果我理解正确,这代表能量密度谱的“一半”。由于变换是对称的,我可以将所有值镜像到 x 的负值以获得完整的光谱。

但是,我不明白的是,为什么我会得到两个尖峰?这里只有一个正弦频率。这是混叠效应吗?

另外,我不知道如何从这个图中得到频率。让我们假设正弦函数的单位是秒,那么密度谱中 1.0 处的峰值是 1Hz 吗?

再说一遍:我理解 FFT 背后的理论;实际应用是问题:)。

谢谢你的帮助!

4

2 回答 2

12

对于 N 点的纯实输入信号,您会得到 N 点的复数输出,其复共轭对称性约为 N/2。您可以忽略 N/2 以上的输出点,因为它们没有为真实输入信号提供有用的附加信息,但如果您绘制它们,您将看到上述对称性,对于单个正弦波,您将看到 binnN - n. (注意:您可以将上面的 N/2 个 bin 视为代表负频率。)总而言之,对于 N 个点的实际输入信号,您可以从 FFT 中获得 N/2 个有用的复数输出 bin,它们表示来自 DC ( 0 Hz)至奈奎斯特(Fs / 2)。

于 2012-05-11T10:04:18.607 回答
3

要从 FFT 的结果中获取频率,您需要知道输入到 FFT 的数据的采样率和 FFT 的长度。每个 bin 的中心频率是 bin 索引乘以采样率除以 FFT 的长度。因此,您将在中途 bin 处获得从 DC (0 Hz) 到 Fs/2 的频率。

FFT 结果的后半部分只是实际数据输入的前半部分的复共轭。原因是复共轭的虚部抵消,这是表示具有零虚部(例如严格实数)的求和结果所必需的。

于 2012-05-11T17:03:43.907 回答