series_fft()

對數列套用快速傅立葉轉換 (FFT)。

series_fft() 函式會在時間/空間網域中使用一連串的複數,並使用快速傅立葉轉換將其轉換成頻率網域。 轉換的複雜數列代表出現在原始數列中的頻率大小和階段。 使用互補函式 series_ifft 將頻率網域轉換回時間/空間網域。

語法

series_fft(x_real [,x_imaginary])

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
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_realfft_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_realy_imag 相同:

    數列 ifft。