DFT¶
DFT - 20¶
版本¶
名称: DFT (GitHub)
域:
main
起始版本:
20
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符自 版本 20 起可用。
摘要¶
计算输入的离散傅里叶变换 (DFT)。
假设输入的形状为 [M, N]
,其中 N
是计算 DFT 的维度,M
表示概念上的“所有其他维度”,形状为 [M, N]
的 DFT y[m, k]
定义为
逆变换定义为
其中 \(j\) 是虚数单位。
输出的实际形状在“输出”部分指定。
属性¶
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 的“所有其他维度”。如果输入张量是复数,则不支持 onesided 输出。值可以是0
或1
。默认值为0
。
输入¶
输入介于 1 到 3 个之间。
input (异构) - 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)
。最后一个维度用于表示复数,因此是无效的轴。
输出¶
output (异构) - 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)
域:
main
起始版本:
17
函数:
False
支持级别:
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 输出。对实数输入启用 onesided 会执行实值快速傅里叶变换 (RFFT)。当输入为实数或复数值时,默认值为 0。值可以是 0 或 1。
输入¶
输入介于 1 到 2 个之间。
input (异构) - 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 个值作为信号。这是一个可选值。
输出¶
output (异构) - 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。