scipy.fft.

next_fast_len#

scipy.fft.next_fast_len(target, real=False)#

Finden Sie die nächste schnelle Größe der Eingabedaten für fft, für Zero-Padding usw.

Die FFT-Algorithmen von SciPy erzielen ihre Geschwindigkeit durch eine rekursive Divide-and-Conquer-Strategie. Dies beruht auf effizienten Funktionen für kleine Primfaktoren der Eingabelänge. Daher sind die Transformationen am schnellsten, wenn Zusammensetzungen der von der FFT-Implementierung behandelten Primfaktoren verwendet werden. Wenn es effiziente Funktionen für alle Radices <= n gibt, dann ist das Ergebnis eine Zahl x >= target mit nur Primfaktoren < n. (Auch bekannt als n-glatte Zahlen)

Parameter:
targetint

Länge, ab der die Suche beginnen soll. Muss eine positive Ganzzahl sein.

realbool, optional

True, wenn die FFT reelle Eingaben oder Ausgaben beinhaltet (z. B. rfft oder hfft, aber nicht fft). Standard ist False.

Rückgabe:
outint

Die kleinste schnelle Länge, die größer oder gleich target ist.

Hinweise

Das Ergebnis dieser Funktion kann sich in Zukunft ändern, wenn sich die Leistungsüberlegungen ändern, z. B. wenn neue Primfaktoren hinzugefügt werden.

Das Aufrufen von fft oder ifft mit reellen Eingabedaten führt intern eine 'R2C'-Transformation durch.

Beispiele

Auf einem bestimmten Rechner dauert eine FFT mit Primlänge 11,4 ms

>>> from scipy import fft
>>> import numpy as np
>>> rng = np.random.default_rng()
>>> min_len = 93059  # prime length is worst case for speed
>>> a = rng.standard_normal(min_len)
>>> b = fft.fft(a)

Zero-Padding auf die nächste reguläre Länge reduziert die Rechenzeit auf 1,6 ms, eine Beschleunigung um das 7,3-fache

>>> fft.next_fast_len(min_len, real=True)
93312
>>> b = fft.fft(a, 93312)

Das Aufrunden auf die nächste Zweierpotenz ist nicht optimal und dauert 3,0 ms zur Berechnung; 1,9-mal länger als die von next_fast_len angegebene Größe

>>> b = fft.fft(a, 131072)