2017-08-08 4 views
1

J'utilise le code Matlab suivant pour effectuer une transformation de Fourier d'une fonction de densité normale:transformée de Fourier de la fonction de densité normale

N=100; 
j=0:(N-1); 
a=-5; 
b=5; 
dx = (b-a)/N; 
x = a+j*dx; 
dt = 2*pi/(N*dx); 
f1 = -N/2*dt; 
f2 = N/2*dt; 
t= f1+ j*dt; 
GX = normpdf(x,0,1); 
fft_GX = real(fft(GX))'; 

Cependant, je ne comprends pas la courbe en forme de cloche attendue lorsque je tente de tracer fft_GX. La transformation de Fourier d'une densité normale a la forme de e^(- t^2/2). Quelqu'un peut-il aider s'il vous plaît ce que je fais incorrect?

+1

S'il vous plaît voir ma réponse à https://stackoverflow.com/questions/45475351/matlab-not-plotting-the-exact-fourier-signal/45475860#45475860 pour une explication et un exemple sur la façon de tracer la FFT. – jodag

Répondre

1

Essayer en utilisant abs au lieu de real. Une autre fonction utile pour recentrer le domaine fréquentiel est fftshift. Sinon, vous verrez l'intrigue de 0 à 2 * pi je crois, au lieu de la vue plus reconnaissable de -pi à pi.

fft_GX = abs(fftshift((fft(GX))'); 
plot(fft_GX); 

Vous devrez peut-être faire une normalisation plus en fonction du nombre d'échantillons que vous avez, mais il ressemble plus à la courbe en cloche prévu que ce que vous voyez à l'origine.