prev_fast_len#
- scipy.fft.prev_fast_len(target, real=False)#
Findet die vorherige schnelle Größe der Eingabedaten für
fft. Nützlich zum Verwerfen einer minimalen Anzahl von Samples vor der FFT.SciPy's FFT-Algorithmen 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 unterstützten Primfaktoren verwendet werden. Wenn für alle Radizes <= n effiziente Funktionen vorhanden sind, dann ist das Ergebnis eine Zahl x <=
targetmit nur Primfaktoren <= n. (Auch bekannt als n-glatte Zahlen)- Parameter:
- Rückgabe:
- outint
Die größte schnelle Länge kleiner oder gleich
target.
Hinweise
Das Ergebnis dieser Funktion kann sich in Zukunft ändern, wenn sich Leistungsaspekte ändern, z.B. wenn neue Primfaktoren hinzugefügt werden.
Das Aufrufen von
fftoderifftmit reellen Eingabedaten führt intern eine'R2C'-Transformation durch.In der aktuellen Implementierung nimmt prev_fast_len Radizes von 2,3,5,7,11 für komplexe FFT und 2,3,5 für reelle FFT an.
Beispiele
Auf einem bestimmten Rechner dauert eine FFT mit Primlänge 16,2 ms
>>> from scipy import fft >>> import numpy as np >>> rng = np.random.default_rng() >>> max_len = 93059 # prime length is worst case for speed >>> a = rng.standard_normal(max_len) >>> b = fft.fft(a)
Die Durchführung einer FFT auf der maximalen schnellen Länge, die kleiner als max_len ist, reduziert die Rechenzeit auf 1,5 ms, eine Beschleunigung um das 10,5-fache
>>> fft.prev_fast_len(max_len, real=True) 92160 >>> c = fft.fft(a[:92160]) # discard last 899 samples