series_fft()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Wendet die schnelle Fourier-Transformation (Fast Fourier Transform, FFT) auf eine Reihe an.
Die funktion series_fft() akzeptiert eine Reihe komplexer Zahlen in der Zeit-/Raumdomäne und transformiert sie mithilfe der Fast Fourier Transform in die Häufigkeitsdomäne. Die transformierte komplexe Reihe stellt die Größe und Phase der Frequenzen dar, die in der ursprünglichen Serie erscheinen. Verwenden Sie die komplementäre Funktion series_ifft , um von der Häufigkeitsdomäne zurück in die Zeit-/Raumdomäne zu transformieren.
Syntax
series_fft(
x_real [,
x_imaginary])
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
x_real | dynamic |
✔️ | Ein numerisches Array, das die reale Komponente der zu transformierenden Datenreihe darstellt. |
x_imaginary | dynamic |
Ein ähnliches Array, das die imaginäre Komponente der Datenreihe darstellt. Dieser Parameter sollte nur angegeben werden, wenn die Eingabereihe komplexe Zahlen enthält. |
Gibt zurück
Die Funktion gibt den komplexen Umgekehrten Fft in zwei Reihen zurück. Die erste Serie für die reale Komponente und die zweite für die imaginäre Komponente.
Beispiel
Generieren Sie eine komplexe Serie, bei der die realen und imaginären Komponenten reine Sinuswellen in unterschiedlichen Frequenzen sind. Verwenden Sie FFT, um sie in die Häufigkeitsdomäne zu transformieren:
let sinewave=(x:double, period:double, gain:double=1.0, phase:double=0.0) { gain*sin(2*pi()/period*(x+phase)) } ; let n=128; // signal length range x from 0 to n-1 step 1 | extend yr=sinewave(x, 8), yi=sinewave(x, 32) | summarize x=make_list(x), y_real=make_list(yr), y_imag=make_list(yi) | extend (fft_y_real, fft_y_imag) = series_fft(y_real, y_imag) | render linechart with(ysplit=panels)
Diese Abfrage gibt fft_y_real und fft_y_imag zurück:
Transformieren Sie eine Datenreihe in die Häufigkeitsdomäne, und wenden Sie dann die umgekehrte Transformation an, um die ursprüngliche Datenreihe zurückzuholen:
let sinewave=(x:double, period:double, gain:double=1.0, phase:double=0.0) { gain*sin(2*pi()/period*(x+phase)) } ; let n=128; // signal length range x from 0 to n-1 step 1 | extend yr=sinewave(x, 8), yi=sinewave(x, 32) | summarize x=make_list(x), y_real=make_list(yr), y_imag=make_list(yi) | extend (fft_y_real, fft_y_imag) = series_fft(y_real, y_imag) | extend (y_real2, y_image2) = series_ifft(fft_y_real, fft_y_imag) | project-away fft_y_real, fft_y_imag // too many series for linechart with panels | render linechart with(ysplit=panels)
Diese Abfrage gibt y_real2 und *y_imag2 zurück, die mit y_real und y_imag identisch sind: