DFT¶
DFT - 20¶
版本¶
名称: DFT (GitHub)
域名:
mainsince_version:
20函数:
Falsesupport_level:
SupportType.COMMON形状推断:
True
此版本的运算符自版本20起可用。
摘要¶
计算输入的离散傅里叶变换(DFT)。
假设输入的形状为 [M, N],其中 N 是计算 DFT 的维度,而 M 表示概念上的“所有其他维度”,
形状为 [M, N] 的 DFT y[m, k] 定义为
逆变换定义为
其中 \(j\) 是虚数单位。
输出的实际形状在“output”部分中指定。
属性¶
inverse - INT (默认是
'0'):是否执行逆离散傅里叶变换。默认值为0,对应于
false。onesided - INT (默认值为
'0'):如果
onesided是1并且输入是实数,则只返回k在[0, 1, 2, ..., floor(n_fft/2) + 1]中的值,因为实数到复数的傅里叶变换满足共轭对称性,即X[m, k] = X[m, n_fft-k]*,其中m表示“所有其他维度”未应用 DFT。如果输入张量是复数,则无法进行单边输出。值可以是0或1。默认值为0。
输入¶
在1到3个输入之间。
输入 (异构) - T1:
对于实数输入,期望的形状为:
[signal_dim0][signal_dim1][signal_dim2]...[signal_dimN][1]。对于复数输入,期望的形状为:[signal_dim0][signal_dim1][signal_dim2]...[signal_dimN][2]。最后一个维度按顺序表示值的实部和虚部。dft_length(可选,异构)- T2:
信号的长度作为一个标量。如果大于轴维度,信号将被零填充至
dft_length。如果小于轴维度,则仅使用前dft_length个值作为信号。axis(可选,异构) - tensor(int64):
作为标量的轴,用于执行DFT。默认值为
-2(最后一个信号轴)。负值表示从后向前计算维度。可接受的范围是\([-r, -2] \cup [0, r-2]\),其中r = rank(input)。最后一个维度用于表示复数,因此是无效的轴。
输出¶
输出 (异构) - T1:
输入向量的傅里叶变换。如果
onesided为0,则期望的形状为:[signal_dim0][signal_dim1][signal_dim2]...[signal_dimN][2]。如果axis=0且onesided为1,则期望的形状为:[floor(signal_dim0/2)+1][signal_dim1][signal_dim2]...[signal_dimN][2]。如果axis=1且onesided为1,则期望的形状为:[signal_dim0][floor(signal_dim1/2)+1][signal_dim2]...[signal_dimN][2]。如果axis=N且onesided为1,则期望的形状为:[signal_dim0][signal_dim1][signal_dim2]...[floor(signal_dimN/2)+1][2]。在指定的axis上的signal_dim等于dft_length。
类型约束¶
T1 在 (
tensor(bfloat16),tensor(double),tensor(float),tensor(float16)) 中:将输入和输出类型限制为浮点张量。
T2 在 (
tensor(int32),tensor(int64)) 中:将标量长度类型限制为整数。
DFT - 17¶
版本¶
名称: DFT (GitHub)
域名:
mainsince_version:
17函数:
Falsesupport_level:
SupportType.COMMON形状推断:
True
此版本的运算符自版本17起可用。
摘要¶
计算输入的离散傅里叶变换。
属性¶
axis - INT (默认为
'1'):执行DFT的轴。默认情况下,此值设置为1,对应于批次索引后的第一个维度。负值表示从后向前计算维度。可接受的范围是\([-r, -2] \cup [0, r-2]\),其中
r = rank(input)。最后一个维度用于表示复数,因此是无效的轴。inverse - INT (默认是
'0'):是否执行逆离散傅里叶变换。默认情况下,此值设置为0,对应于false。
onesided - INT (默认值为
'0'):如果onesided为1,则仅返回w在[0, 1, 2, …, floor(n_fft/2) + 1]中的值,因为实到复傅里叶变换满足共轭对称性,即X[m, w] = X[m, n_fft-w]*。请注意,如果输入或窗口张量是复数,则无法进行单边输出。启用onesided并使用实数输入时,将执行实值快速傅里叶变换(RFFT)。当使用实数或复数输入调用时,默认值为0。值可以为0或1。
输入¶
在1和2个输入之间。
输入 (异构) - T1:
对于实数输入,期望的形状为:[batch_idx][signal_dim1][signal_dim2]…[signal_dimN][1]。对于复数输入,期望的形状为:[batch_idx][signal_dim1][signal_dim2]…[signal_dimN][2]。第一个维度是批次维度。接下来的N个维度对应于信号的维度。最后一个维度按顺序表示值的实部和虚部。
dft_length(可选,异构)- T2:
信号的长度作为一个标量。如果大于轴维度,信号将被零填充至dft_length。如果小于轴维度,则仅使用前dft_length个值作为信号。这是一个可选值。
输出¶
输出 (异构) - T1:
输入向量的傅里叶变换。如果onesided为0,则期望的形状为:[batch_idx][signal_dim1][signal_dim2]…[signal_dimN][2]。如果axis=1且onesided为1,则期望的形状为:[batch_idx][floor(signal_dim1/2)+1][signal_dim2]…[signal_dimN][2]。如果axis=2且onesided为1,则期望的形状为:[batch_idx][signal_dim1][floor(signal_dim2/2)+1]…[signal_dimN][2]。如果axis=N且onesided为1,则期望的形状为:[batch_idx][signal_dim1][signal_dim2]…[floor(signal_dimN/2)+1][2]。指定轴上的signal_dim等于dft_length。
类型约束¶
T1 在 (
tensor(bfloat16),tensor(double),tensor(float),tensor(float16)) 中:将输入和输出类型限制为浮点张量。
T2 在 (
tensor(int32),tensor(int64)) 中:将标量长度类型限制为int64_t。