series_fft()

Växla tjänster genom att använda listrutan Version. Läs mer om navigering.
Gäller för: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

Tillämpar Fast Fourier Transform (FFT) på en serie.

Funktionen series_fft() tar en serie komplexa tal i den tids-/rumsliga domänen och omvandlar den till frekvensdomänen med snabb fourier-transformering. Den transformerade komplexa serien representerar omfattningen och fasen av de frekvenser som förekommer i den ursprungliga serien. Använd den kompletterande funktionen series_ifft för att transformera från frekvensdomänen tillbaka till den tids-/rumsliga domänen.

Syntax

series_fft( x_real [,x_imaginary])

Läs mer om syntaxkonventioner.

Parameterar

Namn Typ Krävs Description
x_real dynamic ✔️ En numerisk matris som representerar den verkliga komponenten i serien som ska transformeras.
x_imaginary dynamic En liknande matris som representerar den imaginära komponenten i serien. Den här parametern bör endast anges om indataserien innehåller komplexa tal.

Retur

Funktionen returnerar den komplexa inverterade fften i två serier. Den första serien för den verkliga komponenten och den andra för den imaginära komponenten.

Example

  • Generera en komplex serie, där de verkliga och imaginära komponenterna är rena sinusvågor i olika frekvenser. Använd FFT för att transformera den till frekvensdomänen:

    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)
    

    Den här frågan returnerar fft_y_real och fft_y_imag:

    Serie fft.

  • Transformera en serie till frekvensdomänen och använd sedan den omvända transformeringen för att få tillbaka den ursprungliga serien:

    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)
    

    Den här frågan returnerar y_real2 och *y_imag2, som är samma som y_real och y_imag:

    Serie ifft.