hfftn#
- scipy.fft.hfftn(x, s=None, axes=None, norm=None, overwrite_x=False, workers=None, *, plan=None)[Quelle]#
Berechnet die N-D FFT einer hermitesch symmetrischen komplexen Eingabe, d.h. eines Signals mit einem realen Spektrum.
Diese Funktion berechnet die N-dimensionale diskrete Fourier-Transformation für eine hermitesch symmetrische komplexe Eingabe über eine beliebige Anzahl von Achsen in einem M-dimensionalen Array mittels der schnellen Fourier-Transformation (FFT). Anders ausgedrückt:
ihfftn(hfftn(x, s)) == xbis auf numerische Genauigkeit. (shier istx.shapemits[-1] = x.shape[-1] * 2 - 1, dies ist aus demselben Grund notwendig wiex.shapefürirfftnotwendig wäre.)- Parameter:
- xarray_like
Eingabearray.
- sSequenz von ganzen Zahlen, optional
Form (Länge jeder transformierten Achse) der Ausgabe (
s[0]bezieht sich auf Achse 0,s[1]auf Achse 1, usw.). s ist auch die Anzahl der Eingabepunkte, die entlang dieser Achse verwendet werden, mit Ausnahme der letzten Achse, bei ders[-1]//2+1Punkte der Eingabe verwendet werden. Entlang jeder Achse wird die Eingabe abgeschnitten, wenn die durch s angegebene Form kleiner ist als die der Eingabe. Wenn sie größer ist, wird die Eingabe mit Nullen aufgefüllt. Wenn s nicht angegeben ist, wird die Form der Eingabe entlang der durch axes angegebenen Achsen verwendet. Mit Ausnahme der letzten Achse, die auf2*(m-1)gesetzt wird, wobeimdie Länge der Eingabe entlang dieser Achse ist.- axesSequenz von ganzen Zahlen, optional
Achsen, über die die inverse FFT berechnet werden soll. Wenn nicht angegeben, werden die letzten len(s) Achsen verwendet, oder alle Achsen, wenn s ebenfalls nicht angegeben ist.
- norm{“backward”, “ortho”, “forward”}, optional
Normalisierungsmodus (siehe
fft). Standard ist „backward“.- overwrite_xbool, optional
Wenn True, kann der Inhalt von x zerstört werden; Standard ist False. Weitere Einzelheiten finden Sie unter
fft.- workersint, optional
Maximale Anzahl von Workern, die für die parallele Berechnung verwendet werden sollen. Wenn negativ, wickelt sich der Wert von
os.cpu_count()ab. Weitere Einzelheiten finden Sie unterfft.- planobject, optional
Dieses Argument ist für die Übergabe eines vorab berechneten Plans von nachgelagerten FFT-Anbietern reserviert. Es wird derzeit in SciPy nicht verwendet.
Hinzugefügt in Version 1.5.0.
- Rückgabe:
- outndarray
Die abgeschnittene oder mit Nullen aufgefüllte Eingabe, transformiert entlang der durch axes angegebenen Achsen, oder durch eine Kombination von s oder x, wie im Abschnitt Parameter oben erklärt. Die Länge jeder transformierten Achse ist wie durch das entsprechende Element von s angegeben, oder die Länge der Eingabe in jeder Achse mit Ausnahme der letzten, wenn s nicht angegeben ist. In der letzten transformierten Achse ist die Länge der Ausgabe, wenn s nicht angegeben ist,
2*(m-1), wobeimdie Länge der letzten transformierten Achse der Eingabe ist. Um eine ungerade Anzahl von Ausgabepunkten in der letzten Achse zu erhalten, muss s angegeben werden.
- Löst aus:
- ValueError
Wenn s und axes unterschiedliche Längen haben.
- IndexError
Wenn ein Element von axes größer ist als die Anzahl der Achsen von x.
Siehe auch
Hinweise
Damit ein 1-D-Signal
xein reelles Spektrum hat, muss es die hermitesche Eigenschaft erfüllenx[i] == np.conj(x[-i]) for all i
Dies verallgemeinert sich auf höhere Dimensionen, indem es nacheinander über jede Achse reflektiert.
x[i, j, k, ...] == np.conj(x[-i, -j, -k, ...]) for all i, j, k, ...
Dies sollte nicht mit einer hermiteschen Matrix verwechselt werden, für die die Transponierte ihr eigenes Konjugat ist.
x[i, j] == np.conj(x[j, i]) for all i, j
Der Standardwert von s geht von einer geraden Ausgabelänge in der letzten Transformationsachse aus. Bei der letzten komplex-zu-real-Transformation erfordert die hermitesche Symmetrie, dass die letzte imaginäre Komponente entlang dieser Achse 0 ist und daher ignoriert wird. Um Informationsverlust zu vermeiden, muss die korrekte Länge der reellen Eingabe angegeben werden.
Beispiele
>>> import scipy.fft >>> import numpy as np >>> x = np.ones((3, 2, 2)) >>> scipy.fft.hfftn(x) array([[[12., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.]]])