Sdílet prostřednictvím


series_fft()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Použije u řady FFT (Fast Fourier Transform).

Funkce series_fft() přebírá řadu komplexních čísel v časové/prostorové doméně a transformuje ji na doménu frekvence pomocí funkce Fast Fourier Transform. Transformovaná komplexní řada představuje velikost a fázi frekvencí, které se objevují v původní řadě. Pomocí doplňkové funkce series_ifft transformujte z domény četnosti zpět na časovou/prostorovou doménu.

Syntaxe

series_fft( x_real [, x_imaginary])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
x_real dynamic ✔️ Číselná matice představující skutečnou součást řady, která se má transformovat.
x_imaginary dynamic Podobné pole představující imaginární komponentu řady. Tento parametr by měl být zadán pouze v případě, že vstupní řada obsahuje komplexní čísla.

Návraty

Funkce vrátí komplexní inverzní fft ve dvou řadách. První série pro skutečnou komponentu a druhá pro imaginární komponentu.

Příklad

  • Vygenerujte komplexní řadu, kde skutečné a imaginární komponenty jsou čisté sinusové vlny v různých frekvencích. Pomocí FFT ho transformujte na doménu frekvence:

    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)
    

    Tento dotaz vrátí fft_y_real a fft_y_imag:

    Série fft.

  • Transformujte řadu na doménu četnosti a pak použijte inverzní transformaci, abyste získali zpět původní řadu:

    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)
    

    Tento dotaz vrátí y_real2 a *y_imag2, které jsou stejné jako y_real a y_imag:

    Řada ifft.