series_fft()
对系列应用快速傅立叶变换 (FFT)。
series_fft() 函数接受时间/空间域中的一系列复数,并使用快速傅里叶变换将其变换为频域。 变换后的复数序列表示原始序列中出现的频率的幅值和相位。 使用互补函数 series_ifft 从频域变换回时间/空间域。
语法
series_fft(
x_real [,
x_imaginary])
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
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 相同):