scipy.fftpack.

fft#

scipy.fftpack.fft(x, n=None, axis=-1, overwrite_x=False)[Quelle]#

Diskrete Fourier-Transformation einer reellen oder komplexen Sequenz zurückgeben.

Das zurückgegebene komplexe Array enthält y(0), y(1),..., y(n-1), wobei

y(j) = (x * exp(-2*pi*sqrt(-1)*j*np.arange(n)/n)).sum().

Parameter:
xarray_like

Array für die Fourier-Transformation.

nint, optional

Länge der Fourier-Transformation. Wenn n < x.shape[axis], wird x gekürzt. Wenn n > x.shape[axis], wird x mit Nullen aufgefüllt. Der Standardwert ergibt n = x.shape[axis].

axisint, optional

Achse, entlang derer die fft’s berechnet werden; der Standardwert ist die letzte Achse (d. h. axis=-1).

overwrite_xbool, optional

Wenn True, kann der Inhalt von x zerstört werden; die Standardeinstellung ist False.

Rückgabe:
zkomplexes ndarray

mit den Elementen

[y(0),y(1),..,y(n/2),y(1-n/2),...,y(-1)]        if n is even
[y(0),y(1),..,y((n-1)/2),y(-(n-1)/2),...,y(-1)]  if n is odd

wo

y(j) = sum[k=0..n-1] x[k] * exp(-sqrt(-1)*j*k* 2*pi/n), j = 0..n-1

Siehe auch

ifft

Inverse FFT

rfft

FFT einer reellen Sequenz

Hinweise

Die Darstellung des Ergebnisses ist „standardmäßig“: Wenn A = fft(a, n), dann enthält A[0] den Nullfrequenzterm, A[1:n/2] die positiven Frequenzterme und A[n/2:] die negativen Frequenzterme, in der Reihenfolge der abnehmend negativen Frequenzen. Für eine 8-Punkte-Transformation sind die Frequenzen des Ergebnisses also [0, 1, 2, 3, -4, -3, -2, -1]. Um die fft-Ausgabe so zu verschieben, dass die Nullfrequenzkomponente zentriert ist, wie z. B. [-4, -3, -2, -1, 0, 1, 2, 3], verwenden Sie fftshift.

Sowohl Single- als auch Double-Precision-Routinen sind implementiert. Halbpräzisions-Eingaben werden in Single-Precision konvertiert. Nicht-Fließkomma-Eingaben werden in Double-Precision konvertiert. Long-Double-Precision-Eingaben werden nicht unterstützt.

Diese Funktion ist am effizientesten, wenn n eine Zweierpotenz ist, und am wenigsten effizient, wenn n eine Primzahl ist.

Beachten Sie, dass, wenn x reellwertig ist, dann gilt A[j] == A[n-j].conjugate(). Wenn x reellwertig ist und n gerade ist, dann ist A[n/2] reell.

Wenn der Datentyp von x reell ist, wird automatisch ein „Real FFT“-Algorithmus verwendet, der die Berechnungszeit etwa halbiert. Um die Effizienz noch etwas weiter zu steigern, verwenden Sie rfft, das die gleiche Berechnung durchführt, aber nur die Hälfte des symmetrischen Spektrums ausgibt. Wenn die Daten sowohl reell als auch symmetrisch sind, kann dct die Effizienz erneut verdoppeln, indem es die Hälfte des Spektrums aus der Hälfte des Signals generiert.

Beispiele

>>> import numpy as np
>>> from scipy.fftpack import fft, ifft
>>> x = np.arange(5)
>>> np.allclose(fft(ifft(x)), x, atol=1e-15)  # within numerical accuracy.
True