series_fft()

Aplica a FFT (Transformada Rápida de Fourier) em uma série.

A função series_fft() usa uma série de números complexos no domínio tempo/espacial e a transforma no domínio de frequência usando a Transformação Fourier Rápida. A série complexa transformada representa a magnitude e a fase das frequências que aparecem na série original. Use a função complementar series_ifft para transformar do domínio de frequência de volta para o domínio de tempo/espacial.

Syntax

series_fft(x_real [,x_imaginary])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
x_real dynamic ✔️ Uma matriz numérica que representa o componente real da série a ser transformada.
x_imaginary dynamic Uma matriz semelhante que representa o componente imaginário da série. Esse parâmetro só deverá ser especificado se a série de entrada contiver números complexos.

Retornos

A função retorna o fft inverso complexo em duas séries. A primeira série para o componente real e a segunda para o componente imaginário.

Exemplo

  • Gere uma série complexa, em que os componentes reais e imaginários são ondas seno puras em diferentes frequências. Use o FFT para transformá-lo no domínio de frequência:

    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)
    

    Essa consulta retorna fft_y_real e fft_y_imag:

    Série fft.

  • Transforme uma série no domínio de frequência e aplique a transformação inversa para recuperar a série original:

    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)
    

    Essa consulta retorna y_real2 e *y_imag2, que são os mesmos que y_real e y_imag:

    Série ifft.