dst#
- scipy.fft.dst(x, type=2, n=None, axis=-1, norm=None, overwrite_x=False, workers=None, orthogonalize=None)[原始碼]#
返回任意類型序列 x 的離散正弦轉換。
- 參數:
- xarray_like
輸入陣列。
- type{1, 2, 3, 4}, 選填
DST 的類型(請參閱註解)。預設類型為 2。
- nint, 選填
轉換長度。如果
n < x.shape[axis]
,則會截斷 x。如果n > x.shape[axis]
,則會對 x 進行零填充。預設結果為n = x.shape[axis]
。- axisint, 選填
計算 dst 的軸;預設值為最後一個軸(即
axis=-1
)。- norm{“backward”, “ortho”, “forward”}, 選填
正規化模式(請參閱註解)。預設值為 “backward”。
- overwrite_xbool, 選填
如果為 True,則可以破壞 x 的內容;預設值為 False。
- workersint, 選填
用於平行計算的最大工作進程數。如果為負數,則該值會從
os.cpu_count()
環繞。有關更多詳細資訊,請參閱fft
。- orthogonalizebool, 選填
是否使用正交化的 DST 變體(請參閱註解)。當
norm="ortho"
時預設為True
,否則為False
。在版本 1.8.0 中新增。
- 返回:
- dstndarray of reals
轉換後的輸入陣列。
參見
idst
反向 DST
註解
警告
對於
type in {2, 3}
,norm="ortho"
會打破與直接傅立葉轉換的直接對應關係。要恢復它,您必須指定orthogonalize=False
。對於
norm="ortho"
,dst
和idst
在兩個方向上都按相同的整體因子縮放。預設情況下,轉換也是正交化的,對於類型 2 和 3,這意味著修改了轉換定義以給出 DST 矩陣的正交性(見下文)。對於
norm="backward"
,dst
上沒有縮放,而idst
按1/N
縮放,其中N
是 DST 的「邏輯」大小。理論上有 8 種 DST 類型,適用於偶數/奇數邊界條件和邊界偏移 [1] 的不同組合,SciPy 中僅實作了前 4 種類型。
類型 I
DST-I 有幾種定義;我們為
norm="backward"
使用以下定義。DST-I 假設輸入在 \(n=-1\) 和 \(n=N\) 附近是奇數的。\[y_k = 2 \sum_{n=0}^{N-1} x_n \sin\left(\frac{\pi(k+1)(n+1)}{N+1}\right)\]請注意,DST-I 僅支援輸入大小 > 1。(未正規化的)DST-I 是它自己的反函數,直到一個因子 \(2(N+1)\)。正交正規化的 DST-I 正是它自己的反函數。
orthogonalize
在這裡沒有效果,因為 DST-I 矩陣已經是正交的,直到一個比例因子2N
。類型 II
DST-II 有幾種定義;我們為
norm="backward"
使用以下定義。DST-II 假設輸入在 \(n=-1/2\) 和 \(n=N-1/2\) 附近是奇數的;輸出在 \(k=-1\) 附近是奇數的,在 \(k=N-1\) 附近是偶數的\[y_k = 2 \sum_{n=0}^{N-1} x_n \sin\left(\frac{\pi(k+1)(2n+1)}{2N}\right)\]如果
orthogonalize=True
,則y[-1]
除以 \(\sqrt{2}\),當與norm="ortho"
結合使用時,會使相應的係數矩陣成為正交正規的 (O @ O.T = np.eye(N)
)。類型 III
DST-III 有幾種定義,我們使用以下定義(對於
norm="backward"
)。DST-III 假設輸入在 \(n=-1\) 附近是奇數的,在 \(n=N-1\) 附近是偶數的\[y_k = (-1)^k x_{N-1} + 2 \sum_{n=0}^{N-2} x_n \sin\left( \frac{\pi(2k+1)(n+1)}{2N}\right)\]如果
orthogonalize=True
,則x[-1]
乘以 \(\sqrt{2}\),當與norm="ortho"
結合使用時,會使相應的係數矩陣成為正交正規的 (O @ O.T = np.eye(N)
)。(未正規化的)DST-III 是(未正規化的)DST-II 的反函數,直到一個因子 \(2N\)。正交正規化的 DST-III 正是正交正規化的 DST-II 的反函數。
類型 IV
DST-IV 有幾種定義,我們使用以下定義(對於
norm="backward"
)。DST-IV 假設輸入在 \(n=-0.5\) 附近是奇數的,在 \(n=N-0.5\) 附近是偶數的\[y_k = 2 \sum_{n=0}^{N-1} x_n \sin\left(\frac{\pi(2k+1)(2n+1)}{4N}\right)\]orthogonalize
在這裡沒有效果,因為 DST-IV 矩陣已經是正交的,直到一個比例因子2N
。(未正規化的)DST-IV 是它自己的反函數,直到一個因子 \(2N\)。正交正規化的 DST-IV 正是它自己的反函數。
參考文獻
[1]Wikipedia, “離散正弦轉換”, https://en.wikipedia.org/wiki/Discrete_sine_transform