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 >=
targetmit nur Primfaktoren < n. (Auch bekannt als n-glatte Zahlen)- Parameter:
- Rückgabe:
- outint
Die kleinste schnelle Länge, die größer oder gleich
targetist.
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
fftoderifftmit 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_lenangegebene Größe>>> b = fft.fft(a, 131072)