scipy.fft.

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)) == x bis auf numerische Genauigkeit. (s hier ist x.shape mit s[-1] = x.shape[-1] * 2 - 1, dies ist aus demselben Grund notwendig wie x.shape für irfft notwendig 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 der s[-1]//2+1 Punkte 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 auf 2*(m-1) gesetzt wird, wobei m die 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 unter fft.

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), wobei m die 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

ihfftn

Die inverse N-D FFT mit realem Spektrum. Inverse von hfftn.

fft

Die 1-D FFT mit Definitionen und Konventionen.

rfft

Vorwärts-FFT von reeller Eingabe.

Hinweise

Damit ein 1-D-Signal x ein reelles Spektrum hat, muss es die hermitesche Eigenschaft erfüllen

x[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.]]])