scipy.fft.

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"dstidst 在兩個方向上都按相同的整體因子縮放。預設情況下,轉換也是正交化的,對於類型 2 和 3,這意味著修改了轉換定義以給出 DST 矩陣的正交性(見下文)。

對於 norm="backward"dst 上沒有縮放,而 idst1/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