series_fft()
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Применяет быстрое преобразование Фурье (БПФ) к серии.
Функция series_fft() принимает ряд сложных чисел во временном или пространственном домене и преобразует его в домен частоты с помощью преобразования Fast Fourier. Преобразованный сложный ряд представляет величину и фазу частот, отображаемых в исходной серии. Используйте дополнительную функцию series_ifft для преобразования из домена частоты обратно в временный или пространственный домен.
Синтаксис
series_fft(
x_real [,
x_imaginary])
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
x_real | dynamic |
✔️ | Числовой массив, представляющий реальный компонент ряда для преобразования. |
x_imaginary | dynamic |
Аналогичный массив, представляющий мнимый компонент серии. Этот параметр следует указать только в том случае, если входной ряд содержит сложные числа. |
Возвраты
Функция возвращает сложный обратный fft в двух рядах. Первая серия для реального компонента и второй для мнимого компонента.
Пример
Создайте сложный ряд, где реальные и мнимые компоненты являются чистыми синусами в разных частотах. Используйте FFT, чтобы преобразовать его в домен частоты:
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)
Этот запрос возвращает fft_y_real и fft_y_imag:
Преобразуйте ряд в домен частоты, а затем примените обратное преобразование, чтобы вернуть исходную серию:
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)
Этот запрос возвращает y_real2 и *y_imag2, которые совпадают с y_real и y_imag: