Bagikan melalui


series_fft()

Berlaku untuk: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Menerapkan Fast Fourier Transform (FFT) pada suatu rangkaian.

Fungsi series_fft() mengambil serangkaian bilangan kompleks dalam domain waktu/spasial dan mengubahnya kembali ke domain frekuensi menggunakan Fast Fourier Transform. Rangkaian kompleks yang diubah mewakili skala dan fase frekuensi yang muncul dalam rangkaian aslinya. Gunakan fungsi komplementer series_ifft untuk mengubah dari domain frekuensi kembali ke domain waktu/spasial.

Sintaks

series_fft( x_real [, x_imaginary])

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
x_real dynamic ✔️ Array numerik yang mewakili komponen nyata dari seri untuk diubah.
x_imaginary dynamic Array serupa yang mewakili komponen imajiner seri. Parameter ini hanya boleh ditentukan jika seri input berisi angka kompleks.

Mengembalikan

Fungsi ini menampilkan fft terbalik kompleks dalam dua rangkaian. Rangkaian pertama untuk komponen nyata dan rangkaian kedua untuk komponen imajiner.

Contoh

  • Menghasilkan rangkaian yang kompleks, di mana komponen nyata dan imajiner adalah gelombang sinus murni dalam frekuensi yang berbeda. Gunakan FFT untuk mengubahnya menjadi domain frekuensi:

    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)
    

    Kueri ini menampilkan fft_y_real dan fft_y_imag:

    Seri fft.

  • Ubah rangkaian ke domain frekuensi, lalu terapkan transformasi terbalik untuk kembali ke rangkaian aslinya:

    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)
    

    Kueri ini menampilkan y_real2 dan *y_imag2, keduanya sama dengan y_real dan y_imag:

    Seri ifft.