2014-05-16 267 views
6

這可能是一個非常天真的問題,但在這裏。傅立葉變換與Numpy FFT

我想計算函數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是計算數字數組的傅立葉變換的方式,但這與連續傅里葉變換公式的簡單離散化不同。

回答

7

不,FFT不是計算函數的傅立葉變換(FT)的方法。 FFT是計算DFT的快速算法,即採樣數組的離散傅里葉變換。這個樣本數組可以被解釋爲等間隔點上的函數抽樣。

DFT和FT是兩種不同的東西,你不能使用DFT來計算FT。看到這個link他們的區別。

如果你的函數是週期性的,那麼它的頻譜是一個只在點上定義的函數,如果你非常仔細地選擇你的域,你可以在函數的等距樣本上使用DFT來推斷FT,並取得很好的成功和採樣率,並且該域是您的函數的所有諧波的所有周期的倍數。

+0

您是否確實聲稱離散傅立葉變換不是傅立葉變換? –

+0

我在說DFT不是英國「金融時報」。 FT通常是指函數的連續傅里葉變換。我會稍微編輯帖子以避免混淆。 – gg349

2

我想我回答了你的問題here。 (在上面的鏈接中詢問並自己回答之前沒有看到您的問題)