2014-05-16 15 views
6

Questa è probabilmente una domanda molto ingenua, ma eccola qui.Fourier Transformation vs Numpy FFT

Voglio calcolare la trasformata di Fourier di una funzione f (x). Quindi definisco una matrice numpy X e passo attraverso la funzione vettoriale f. Ora, se calcolo la FFT di questo array f (X) non viene fuori per essere Fourier Transform di f (x) come farebbe se lo facessi su un pezzo di carta. Ad esempio, se calcolo FFT di gaussiano, dovrei ottenere un gaussiano o un array la cui parte reale assomigli molto a un gaussiano.

questo è il codice. per favore fatemi sapere cosa devo cambiare per ottenere la solita Trasformata di Fourier.

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() 

Lo ripeto. Voglio calcolare la trasformazione di Fourier di qualsiasi funzione (ad esempio gaussiana). FFT è un modo per calcolare la trasformata di Fourier di una matrice di numeri, ma questo non è lo stesso della semplice discretizzazione della formula di trasformazione di Fourier continua.

risposta

7

No, la FFT non è un modo per calcolare la trasformata di Fourier (FT) di una funzione. La FFT è un algoritmo veloce per calcolare la DFT, trasformata di Fourier discreta di una matrice di campioni. Questa matrice di campioni può essere interpretata come il campionamento di una funzione in punti equi-spaziati.

Il DFT e il FT sono 2 cose diverse, e non è possibile utilizzare la DFT per calcolare il FT. Vedi questo link sulle loro differenze.

Se la tua funzione è periodica, il suo spettro è una funzione definita solo nei punti, e puoi usare la DFT su campioni equi-spaziati della funzione per dedurre il FT con successo, se scegli attentamente il tuo dominio e frequenza di campionamento, e il dominio è un multiplo di tutti i periodi di tutte le armoniche della tua funzione.

+0

Stai affermando che una Trasformata di Fourier discreta non è una trasformata di Fourier? –

+0

Sto affermando che la DFT non è il FT. Il FT di solito si riferisce alla trasformata di Fourier continua di una funzione. Modificherò leggermente il post per evitare confusione. – gg349

2

Penso di aver risposto alla tua domanda here. (Non ho visto la tua domanda prima di chiedere e rispondere personalmente al link sopra)