scipy.fftpack.

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=-1n=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/2n=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