Compartir a través de


series_fft()

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Aplica la transformación de Fourier rápida (FFT) en una serie.

La función series_fft() toma una serie de números complejos en el dominio temporal o espacial y lo transforma en el dominio de frecuencia mediante la transformación Fast Fourier. La serie compleja transformada representa la magnitud y la fase de las frecuencias que aparecen en la serie original. Use la función complementaria series_ifft para transformar desde el dominio de frecuencia al dominio de tiempo o espacial.

Sintaxis

series_fft( x_real [, x_imaginary])

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Type Obligatorio Descripción
x_real dynamic ✔️ Matriz numérica que representa el componente real de la serie que se va a transformar.
x_imaginary dynamic Matriz similar que representa el componente imaginario de la serie. Este parámetro solo se debe especificar si la serie de entrada contiene números complejos.

Devoluciones

La función devuelve el fft inverso complejo en dos series. Primera serie para el componente real y la segunda para el componente imaginario.

Ejemplo

  • Genere una serie compleja, donde los componentes reales e imaginarios son ondas sinusales puras en diferentes frecuencias. Use FFT para transformarlo en el dominio de frecuencia:

    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)
    

    Esta consulta devuelve fft_y_real y fft_y_imag:

    Serie fft.

  • Transforme una serie en el dominio de frecuencia y, a continuación, aplique la transformación inversa para obtener la serie 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)
    

    Esta consulta devuelve y_real2 y *y_imag2, que son los mismos que y_real y y_imag:

    Serie ifft.