2015-03-04 1 views
0

Je veux calculer la transformée de Fourier inverse d'un spectre de puissance gaussien, obtenant ainsi à nouveau un gaussien. Je veux utiliser ce fait pour vérifier que l'IFFT de mon spectre de puissance gaussien est sensible, en ce sens qu'il produit un tableau de données efficacement distribué de manière gaussienne. Maintenant, il s'avère que l'IFFT doit être multiplié par un facteur 2 * pi * N, où N est la dimension du tableau, afin de récupérer la fonction de corrélation analytique (qui est la transformée de Fourier inverse du spectre de puissance) . Quelqu'un peut-il expliquer pourquoi?IFFT d'un spectre de puissance gaussien - Python

Voici la partie de code qui remplit d'abord un tableau avec le spectre de puissance gaussien, puis effectue l'IFFT du spectre de puissance.

power_spectrum_k = np.zeros(n, float) 
for k in range(1, int(n/2+1)): 
    power_spectrum_k[k] = math.exp(-(2*math.pi*k*sigma/n)*(2*math.pi*k*sigma/n)) 

for k in range(int(n/2+1), n): 
    power_spectrum_k[k] = power_spectrum_k[int(k - n/2)] 

inverse_transform2 = np.zeros(n, float) 
inverse_transform2 = np.fft.ifft(power_spectrum_k) 

où la symétrie du spectre de puissance vient de la nécessité d'obtenir une fonction réelle de corrélation, en même temps, en suivant les règles pour l'utilisation de numpy.ifft (citant la documentation:

" L'entrée doit être ordonnée de la même manière que fft, c'est-à-dire que [0] doit contenir le terme de fréquence zéro, [1: n/2 + 1] doit contenir les termes de fréquence positive, et a [n]/2 + 1:] devrait contenir les termes de fréquence négative, dans l'ordre décroissant de la fréquence négative ".)

+1

Si votre résultat d'analyse est celui obtenu par intégration, vous devez vous rappeler que ifft est une transformée de Fourier discrète, pas la transformée continue. Votre question est probablement juste en regardant la définition des transformations discrètes: https://en.wikipedia.org/wiki/Discrete_Fourier_transform –

Répondre

0

La raison en est Plancherel theorem, qui stipule que la transformée de Fourier conserve l'énergie du signal, à savoir, l'intégrale sur | x (t) | ² est égal à l'intégrale sur | X (f) | ². Si vous avez plus d'échantillons (par exemple, causés par un taux d'échantillonnage plus élevé ou un intervalle plus long), vous avez plus d'énergie. Pour cette raison, le résultat IFFT est mis à l'échelle par un facteur de N. Votre facteur dépend de la main sur le convention of Fourier Integral utilisé, comme @pv déjà noté. D'autre part, sur la longueur de votre intervalle, puisque l'intégrale sur la puissance de l'échantillon et l'intervalle continu doivent être les mêmes.