series_fft()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 :
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 :