Sdílet prostřednictvím


series_fft()

Použije rychlou Fourierovou transformaci (FFT) na řadu.

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

Syntax

series_fft(x_real [,x_imaginary])

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

Parametry

Název Typ Vyžadováno Popis
x_real dynamic ✔️ Číselné pole představující skutečnou součást řady, která se má transformovat.
x_imaginary dynamic Podobné pole představující imaginární součást ř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í řada pro skutečnou součást 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:

    Řada fft.

  • Transformujte řadu do frekvenční domény 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.