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), wobeiy(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. Wennn > x.shape[axis], wird x mit Nullen aufgefüllt. Der Standardwert ergibtn = 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
Hinweise
Die Darstellung des Ergebnisses ist „standardmäßig“: Wenn
A = fft(a, n), dann enthältA[0]den Nullfrequenzterm,A[1:n/2]die positiven Frequenzterme undA[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 Siefftshift.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
xreellwertig ist, dann giltA[j] == A[n-j].conjugate(). Wennxreellwertig ist undngerade ist, dann istA[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, kanndctdie 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