Udostępnij za pośrednictwem


series_fft()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Stosuje przekształcenie Fast Fourier (FFT) w serii.

Funkcja series_fft() przyjmuje szereg liczb zespolonych w domenie czasowej/przestrzennej i przekształca ją w domenę częstotliwości przy użyciu transformacji Fast Fourier. Przekształcona seria złożona reprezentuje wielkość i fazę częstotliwości pojawiających się w oryginalnej serii. Użyj funkcji uzupełniającej series_ifft , aby przekształcić domenę częstotliwości z powrotem do domeny czasowej/przestrzennej.

Składnia

series_fft( x_real [, x_imaginary])

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
x_real dynamic ✔️ Tablica liczbowa reprezentująca rzeczywisty składnik serii do przekształcenia.
x_imaginary dynamic Podobna tablica reprezentująca wyimaginowany składnik serii. Ten parametr należy określić tylko wtedy, gdy seria wejściowa zawiera liczby zespolone.

Zwraca

Funkcja zwraca przesłoniętą odwrotną fft w dwóch seriach. Pierwsza seria dla rzeczywistego składnika i druga dla wyimaginowanego składnika.

Przykład

  • Generowanie złożonej serii, gdzie rzeczywiste i wyimaginowane składniki są czystymi sinusami w różnych częstotliwościach. Użyj FFT, aby przekształcić go w domenę częstotliwości:

    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)
    

    To zapytanie zwraca fft_y_real i fft_y_imag:

    Seria fft.

  • Przekształć serię w domenę częstotliwości, a następnie zastosuj odwrotną transformację, aby wrócić do oryginalnej serii:

    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)
    

    To zapytanie zwraca y_real2 i *y_imag2, które są takie same jak y_real i y_imag:

    Ifft serii.