6

这可能是一个非常幼稚的问题,但就是这样。

我想计算函数 f(x) 的傅里叶变换。所以我定义了一个numpy数组X并通过向量化函数f。现在,如果我计算这个数组 f(X) 的 FFT,它不会像我在一张纸上做的那样是 f(x) 的傅立叶变换。例如,如果我计算高斯的 FFT,我应该得到一个高斯或实部非常接近高斯的数组。

这是代码。请让我知道我必须改变什么才能获得通常的傅立叶变换。

import matplotlib.pyplot as plt
import numpy as np

N = 128
x = np.linspace(-5, 5, N)
y = np.exp(-x**2)

y_fft = np.fft.fftshift(np.fft.fft(y).real)
plt.plot(x, y_fft)

plt.show()

让我重申一下。我想计算任何函数的傅里叶变换(例如高斯)。FFT 是计算数字数组的傅里叶变换的方法,但这与连续傅里叶变换公式的简单离散化不同。

4

2 回答 2

7

不,FFT 不是计算函数傅里叶变换 (FT) 的方法。FFT 是一种快速算法,用于计算样本数组的 DFT、离散傅里叶变换。这个样本数组可以解释为函数在等间距点的采样。

DFT 和 FT 是两个不同的东西,你不能用 DFT 来计算 FT。有关它们的差异,请参见此链接。

如果你的函数是周期性的,那么它的频谱是一个只在点上定义的函数,如果你非常仔细地选择你的域和采样率,你可以在函数的等间距样本上使用 DFT 来成功推断 FT,域是函数所有谐波的所有周期的倍数。

于 2014-05-16T18:00:11.107 回答
3

我想我在这里回答了你的问题。(在上面的链接中自己提问和回答之前没有看到您的问题)

于 2014-06-06T09:29:13.127 回答