2016-06-15 8 views
1

mein ursprüngliches Problem war das folgende:FFTshift verursacht Schwingungen - warum? (numpy)

Ich habe eine Puls-Hüllkurve in einem Array a (0-Element = Zeit 0, letztes Element = Zeit T). Ich möchte das Spektrum des Impulses fourier. Also was ich getan habe, war np.fft.fftshift(np.fft.fft(a)). Alles gut.

Aber dann wurde mir gesagt, auch vorher eine Schicht zu machen: np.fft.fftshift(np.fft.fft(np.fft.fftshift(a))). Dann entstanden Schwingungen.

Jetzt frage ich mich, warum man 2 Schichten tun würde, wie oben gezeigt, und warum Schwingungen entstehen ...

Hier das Beispiel: Ich habe den folgenden Code

x = np.arange(100) 
a =np.sin(np.pi*x**2/1000) 

a: a(x)

a_fft: enter image description here

a_fft_shift = np.fft.fftshift(a_fft) 

a_fft_shift: enter image description here

a_shift = np.fft.fftshift(a) 
    a_shift_fft = np.fft.fft(a_shift) 

a_shift_fft: enter image description here

a_shift_fft_shift = np.fft.fftshift(a_shift_fft) 

a_shift_fft_shift: enter image description here

+3

vor der Verschiebung: die tiefen Frequenzen bei 0 und 100. Nach der Verschiebung, sie bei 50 sind, als ob sie auf hohe Frequenzen entsprach. FFT und FFT^{- 1} sind sehr nah. Wenn daher die FFT des verschobenen Signals berechnet wird, treten Hochfrequenzstörungen auf. 'np.fft.fftshift()' ist nur nützlich, um tiefe Frequenzen in der Mitte des Plots anzuzeigen. Verwenden Sie es nur für die Anzeige! – francis

Antwort

2

Ihre Linie

a_shift = np.fft.fftshift(a) 

sortiert Ihr ursprüngliches Zeitbereichssignal um. Das bedeutet in Bezug auf FFT, dass Sie die Phasen ändern. Beachten Sie auch, dass Ihr Signal unterbrochen ist. Durch die obige Linie wird diese Diskontinuität in die Mitte des Signals verschoben, was bewirkt, dass die FFT eine unendliche Menge von Hochfrequenz-Kosinuskomponenten erzeugt. Wenn Sie es an einen anderen Ort verschieben, wird die Energie entsprechend verteilt. Das andere Problem ist, dass Sie nur den realen Teil des Spektrums betrachten, d. e., die Kosinus-Komponenten. Schau immer auch auf den Imaginärteil! Werfen Sie auch einen Blick auf das Größenspektrum, um zu sehen, dass die Position der Diskontinuität nur die Phase beeinflusst. Die Gesamtenergie bleibt immer gleich.

comparison