Поделиться через


series_fft()

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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:

    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)
    | 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:

    Серию ifft.