dst#
- scipy.fftpack.dst(x, type=2, n=None, axis=-1, norm=None, overwrite_x=False)[原始碼]#
回傳任意類型序列 x 的離散正弦轉換 (Discrete Sine Transform)。
- 參數:
- xarray_like
輸入陣列。
- type{1, 2, 3, 4}, optional
DST 的類型 (請參閱註解)。預設類型為 2。
- nint, optional
轉換的長度。如果
n < x.shape[axis]
,則 x 會被截斷。如果n > x.shape[axis]
,則 x 會被零填充。預設結果為n = x.shape[axis]
。- axisint, optional
計算 dst 的軸;預設值為最後一個軸 (即,
axis=-1
)。- norm{None, ‘ortho’}, optional
正規化模式 (請參閱註解)。預設值為 None。
- overwrite_xbool, optional
如果為 True,則可以破壞 x 的內容;預設值為 False。
- 回傳:
- dstndarray of reals
轉換後的輸入陣列。
參見
idst
反向 DST
註解
對於單維陣列
x
。理論上有 8 種 DST 類型,適用於偶數/奇數邊界條件和邊界偏移的不同組合 [1],scipy 中僅實作了前 4 種類型。
類型 I
DST-I 有幾種定義;我們對
norm=None
使用以下定義。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 正好是其自身的反函數。類型 II
DST-II 有幾種定義;我們對
norm=None
使用以下定義。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)\]如果
norm='ortho'
,則y[k]
乘以比例因子f
\[\begin{split}f = \begin{cases} \sqrt{\frac{1}{4N}} & \text{if }k = 0, \\ \sqrt{\frac{1}{2N}} & \text{otherwise} \end{cases}\end{split}\]類型 III
DST-III 有幾種定義,我們使用以下定義 (對於
norm=None
)。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)\](未正規化的) DST-III 是 (未正規化的) DST-II 的反函數,最多相差一個因子
2N
。正交正規化的 DST-III 正好是正交正規化的 DST-II 的反函數。在 0.11.0 版本中新增。
類型 IV
DST-IV 有幾種定義,我們使用以下定義 (對於
norm=None
)。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)\](未正規化的) DST-IV 是其自身的反函數,最多相差一個因子
2N
。正交正規化的 DST-IV 正好是其自身的反函數。在 1.2.0 版本中新增: 支援 DST-IV。
參考文獻
[1]Wikipedia, “Discrete sine transform”, https://en.wikipedia.org/wiki/Discrete_sine_transform