Condividi tramite


series_fft()

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft Sentinel

Applica fast Fourier Transform (FFT) a una serie.

La funzione series_fft() accetta una serie di numeri complessi nel dominio temporale/spaziale e la trasforma nel dominio di frequenza usando la trasformazione Fast Fourier. La serie complessa trasformata rappresenta la grandezza e la fase delle frequenze visualizzate nella serie originale. Usare la funzione complementare series_ifft per passare dal dominio di frequenza al dominio temporale/spaziale.

Sintassi

series_fft( x_real [, x_imaginary])

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
x_real dynamic ✔️ Matrice numerica che rappresenta il componente reale della serie da trasformare.
x_imaginary dynamic Matrice simile che rappresenta il componente immaginario della serie. Questo parametro deve essere specificato solo se la serie di input contiene numeri complessi.

Valori restituiti

La funzione restituisce il fft inverso complesso in due serie. La prima serie per il componente reale e la seconda per il componente immaginario.

Esempio

  • Generare una serie complessa, in cui i componenti reali e immaginari sono onde di seno puro in frequenze diverse. Usare FFT per trasformarlo nel dominio di frequenza:

    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)
    

    Questa query restituisce fft_y_real e fft_y_imag:

    Serie fft.

  • Trasformare una serie nel dominio di frequenza e quindi applicare la trasformazione inversa per tornare alla serie originale:

    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)
    

    Questa query restituisce y_real2 e *y_imag2, uguali a y_real e y_imag:

    Serie ifft.