DFT¶
DFT - 20¶
版本¶
名稱: DFT (GitHub)
網域:
main
since_version:
20
function:
False
support_level:
SupportType.COMMON
形狀推斷:
True
此版本的運算子已在版本 20推出。
摘要¶
計算輸入的離散傅立葉轉換 (DFT)。
假設輸入的形狀為 [M, N]
,其中 N
是計算 DFT 的維度,而 M
表示概念上的「所有其他維度」,形狀為 [M, N]
的 DFT y[m, k]
定義為
而反轉換定義為
其中 \(j\) 是虛數單位。
輸出的實際形狀在「輸出」區段中指定。
參考資料:https://scipy-docs.dev.org.tw/doc/scipy/tutorial/fft.html
屬性¶
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 個輸入之間。
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 in (
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)將輸入和輸出類型限制為浮點數張量。
T2 in (
tensor(int32)
,tensor(int64)
)將純量長度類型限制為整數。
DFT - 17¶
版本¶
名稱: DFT (GitHub)
網域:
main
since_version:
17
function:
False
support_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 輸出。使用實數輸入啟用 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 in (
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)將輸入和輸出類型限制為浮點數張量。
T2 in (
tensor(int32)
,tensor(int64)
)將純量長度類型約束為 int64_t。