傅里叶变换 vs Numpy FFT

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是计算数字数组的傅里叶变换的方法,但这与连续傅里叶变换公式的简单离散化不同。

2个回答

7
不,FFT不是计算函数傅里叶变换(FT)的方法。FFT是一种快速算法,用于计算样本数组的离散傅里叶变换DFT。这个样本数组可以被解释为在等间距点上对函数进行采样。
DFT和FT是两个不同的东西,你不能使用DFT来计算FT。请参见link以了解它们之间的区别。
如果您的函数是周期性的,则其频谱是仅在点处定义的函数,并且您可以使用函数的等间距采样来推断FT,如果您非常小心地选择域和采样率,并且该域是所有谐波周期的倍数。

你真的在宣称离散傅里叶变换不是傅里叶变换吗? - Mali Remorker
我想表达的是DFT不等于FT。FT通常指的是函数的连续傅里叶变换。为避免混淆,我稍微编辑了一下文章。 - gg349

4

我想我在这里回答了你的问题。(本人并未看到您提出的问题,自行在上述链接中回答了该问题)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接