Freigeben über


series_fft()

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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:

    Reihenfft.

  • 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:

    Series ifft.