series_fft()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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:
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: