scipy.fft.

ifft#

scipy.fft.ifft(x, n=None, axis=-1, norm=None, overwrite_x=False, workers=None, *, plan=None)[Quelle]#

Berechnet die 1-D inverse diskrete Fourier-Transformation.

Diese Funktion berechnet die Inverse der von fft berechneten 1-D n-Punkt diskreten Fourier-Transformation. Anders ausgedrückt, ifft(fft(x)) == x bis auf numerische Genauigkeit.

Die Eingabe sollte in der gleichen Reihenfolge angeordnet sein, wie sie von fft zurückgegeben wird, d. h.

  • x[0] sollte den Term der Nullfrequenz enthalten,

  • x[1:n//2] sollte die Terme der positiven Frequenzen enthalten,

  • x[n//2 + 1:] sollte die Terme der negativen Frequenzen enthalten, in aufsteigender Reihenfolge beginnend mit der am stärksten negativen Frequenz.

Bei einer geraden Anzahl von Eingabepunkten repräsentiert x[n//2] die Summe der Werte an den positiven und negativen Nyquist-Frequenzen, da diese zwei zusammen aliased werden. Einzelheiten finden Sie unter fft.

Parameter:
xarray_like

Eingabearray, kann komplex sein.

nint, optional

Länge der transformierten Achse der Ausgabe. Wenn n kleiner ist als die Länge der Eingabe, wird die Eingabe abgeschnitten. Wenn sie größer ist, wird die Eingabe mit Nullen aufgefüllt. Wenn n nicht angegeben ist, wird die Länge der Eingabe entlang der durch axis angegebenen Achse verwendet. Siehe Hinweise zu Padding-Problemen.

axisint, optional

Achse, über die die inverse DFT berechnet werden soll. Wenn nicht angegeben, wird die letzte Achse verwendet.

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:
outcomplex ndarray

Die abgeschnittene oder mit Nullen aufgefüllte Eingabe, transformiert entlang der durch axis angegebenen Achse oder der letzten Achse, wenn axis nicht angegeben ist.

Löst aus:
IndexError

Wenn axes größer ist als die letzte Achse von x.

Siehe auch

fft

Die 1-D (vorwärts) FFT, deren Inverse ifft ist.

ifft2

Die 2-D inverse FFT.

ifftn

Die N-D inverse FFT.

Hinweise

Wenn der Eingabeparameter n größer ist als die Größe der Eingabe, wird die Eingabe durch Anhängen von Nullen am Ende aufgefüllt. Obwohl dies der übliche Ansatz ist, kann er zu überraschenden Ergebnissen führen. Wenn eine andere Auffüllung gewünscht ist, muss diese vor dem Aufruf von ifft durchgeführt werden.

Wenn x ein 1-D-Array ist, ist die ifft äquivalent zu

y[k] = np.sum(x * np.exp(2j * np.pi * k * np.arange(n)/n)) / len(x)

Wie bei fft hat ifft Unterstützung für alle Fließkommatypen und ist für reale Eingaben optimiert.

Beispiele

>>> import scipy.fft
>>> import numpy as np
>>> scipy.fft.ifft([0, 4, 0, 0])
array([ 1.+0.j,  0.+1.j, -1.+0.j,  0.-1.j]) # may vary

Erstellen und plotten Sie ein bandbegrenztes Signal mit zufälligen Phasen

>>> import matplotlib.pyplot as plt
>>> rng = np.random.default_rng()
>>> t = np.arange(400)
>>> n = np.zeros((400,), dtype=complex)
>>> n[40:60] = np.exp(1j*rng.uniform(0, 2*np.pi, (20,)))
>>> s = scipy.fft.ifft(n)
>>> plt.plot(t, s.real, 'b-', t, s.imag, 'r--')
[<matplotlib.lines.Line2D object at ...>, <matplotlib.lines.Line2D object at ...>]
>>> plt.legend(('real', 'imaginary'))
<matplotlib.legend.Legend object at ...>
>>> plt.show()
../../_images/scipy-fft-ifft-1.png