Partager via


series_fft()

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Applique la transformation de Fourier rapide (FFT) sur une série.

La fonction series_fft() prend une série de nombres complexes dans le domaine time/spatial et la transforme en domaine de fréquence à l’aide de la transformation rapide de Fourier. La série complexe transformée représente l’ampleur et la phase des fréquences apparaissant dans la série originale. Utilisez la fonction complémentaire series_ifft pour effectuer une transformation du domaine de fréquence vers le domaine temporel/spatial.

Syntaxe

series_fft( x_real [, x_imaginary])

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
x_real dynamic ✔️ Tableau numérique représentant le composant réel de la série à transformer.
x_imaginary dynamic Tableau similaire représentant le composant imaginaire de la série. Ce paramètre ne doit être spécifié que si la série d’entrée contient des nombres complexes.

Retours

La fonction retourne le fft inverse complexe dans deux séries. La première série pour le composant réel et la deuxième pour le composant imaginaire.

Exemple

  • Générez une série complexe, où les composants réels et imaginaires sont des ondes sinusoïques pures dans différentes fréquences. Utilisez FFT pour la transformer en domaine de fréquence :

    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)
    

    Cette requête retourne fft_y_real et fft_y_imag :

    Fft série.

  • Transformez une série en domaine de fréquence, puis appliquez la transformation inverse pour récupérer la série d’origine :

    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)
    

    Cette requête retourne y_real2 et *y_imag2, qui sont identiques à y_real et y_imag :

    Série ifft.