本文簡要介紹 python 語言中 scipy.fft.dct
的用法。
用法:
scipy.fft.dct(x, type=2, n=None, axis=-1, norm=None, overwrite_x=False, workers=None, orthogonalize=None)#
返回任意類型序列 x 的離散餘弦變換。
- x: array_like
輸入數組。
- type: {1, 2, 3, 4},可選
DCT 的類型(見注釋)。默認類型為 2。
- n: 整數,可選
變換的長度。如果
n < x.shape[axis]
,x被截斷。如果n > x.shape[axis]
,x是零填充的。默認結果是n = x.shape[axis]
.- axis: 整數,可選
計算 dct 的軸;默認值在最後一個軸上(即
axis=-1
)。- norm: {“backward”, “ortho”, “forward”},可選
標準化模式(見注釋)。默認為“backward”。
- overwrite_x: 布爾型,可選
如果為 True,則 x 的內容可以被銷毀;默認為假。
- workers: 整數,可選
用於並行計算的最大工作線程數。如果為負,則該值從
os.cpu_count()
環繞。有關詳細信息,請參閱fft
。- orthogonalize: 布爾型,可選
是否使用正交 DCT 變體(見注釋)。默認為
True
當norm="ortho"
和False
否則。
- y: 真實的ndarray
轉換後的輸入數組。
參數 ::
返回 ::
注意:
對於一維數組
x
,dct(x, norm='ortho')
等於 MATLABdct(x)
。警告
對於
type in {1, 2, 3}
,norm="ortho"
打破了與直接傅裏葉變換的直接對應關係。要恢複它,您必須指定orthogonalize=False
。對於
norm="ortho"
,dct
和idct
在兩個方向上均按相同的總體因子進行縮放。默認情況下,變換也是正交的,這對於類型 1、2 和 3 意味著變換定義被修改以給出 DCT 矩陣的正交性(見下文)。對於
norm="backward"
,dct
沒有縮放,並且idct
按1/N
縮放,其中N
是 DCT 的 “logical” 大小。對於norm="forward"
,1/N
歸一化應用於前向dct
,而idct
未歸一化。DCT 理論上有 8 種類型,SciPy 中隻實現了前 4 種類型。'The'DCT 一般是指 DCT 類型 2,‘the’ Inverse DCT 一般是指 DCT 類型 3。
第一類
DCT-I有幾個定義;我們使用以下內容(對於
norm="backward"
)如果
orthogonalize=True
、x[0]
和x[N-1]
乘以 的比例因子,並且y[0]
和y[N-1]
除以 。當與norm="ortho"
結合使用時,這使得相應的係數矩陣正交(O @ O.T = np.eye(N)
)。注意
DCT-I 僅支持輸入大小 > 1。
Ⅱ型
DCT-II有幾個定義;我們使用以下內容(對於
norm="backward"
)如果
orthogonalize=True
,y[0]
除以 ,當與norm="ortho"
結合時,使相應的係數矩陣正交(O @ O.T = np.eye(N)
)。第三類
有幾個定義,我們使用以下(對於
norm="backward"
)如果
orthogonalize=True
,x[0]
項乘以 ,當與norm="ortho"
結合時,使相應的係數矩陣正交(O @ O.T = np.eye(N)
)。(未歸一化的)DCT-III 是(未歸一化的)DCT-II 的倒數,最大因子為 2N。正交歸一化的DCT-III 與正交歸一化的DCT-II 正好相反。
Ⅳ型
DCT-IV有幾個定義;我們使用以下內容(對於
norm="backward"
)orthogonalize
在這裏沒有影響,因為 DCT-IV 矩陣已經正交到2N
的比例因子。參考:
[1]“一維和二維的快速餘弦變換”,作者:J. Makhoul,IEEE 聲學、語音和信號處理匯刊卷。 28(1),第 27-34 頁,DOI:10.1109/TASSP.1980.1163351(1980 年)。
[2]維基百科,“Discrete cosine transform”,https://en.wikipedia.org/wiki/Discrete_cosine_transform
例子:
對於真實的even-symmetrical 輸入,Type 1 DCT 等效於 FFT(雖然更快)。輸出也是真實的和even-symmetrical。一半的 FFT 輸入用於生成一半的 FFT 輸出:
>>> from scipy.fft import fft, dct >>> import numpy as np >>> fft(np.array([4., 3., 5., 10., 5., 3.])).real array([ 30., -8., 6., -2., 6., -8.]) >>> dct(np.array([4., 3., 5., 10.]), 1) array([ 30., -8., 6., -2.])
相關用法
- Python SciPy fft.dctn用法及代碼示例
- Python SciPy fft.dstn用法及代碼示例
- Python SciPy fft.idctn用法及代碼示例
- Python SciPy fft.next_fast_len用法及代碼示例
- Python SciPy fft.fft2用法及代碼示例
- Python SciPy fft.fftn用法及代碼示例
- Python SciPy fft.ifft2用法及代碼示例
- Python SciPy fft.ifftn用法及代碼示例
- Python SciPy fft.ihfftn用法及代碼示例
- Python SciPy fft.rfftfreq用法及代碼示例
- Python SciPy fft.rfft用法及代碼示例
- Python SciPy fft.fftfreq用法及代碼示例
- Python SciPy fft.fht用法及代碼示例
- Python SciPy fft.idstn用法及代碼示例
- Python SciPy fft.rfftn用法及代碼示例
- Python SciPy fft.hfft用法及代碼示例
- Python SciPy fft.set_global_backend用法及代碼示例
- Python SciPy fft.ifftshift用法及代碼示例
- Python SciPy fft.ihfft用法及代碼示例
- Python SciPy fft.irfftn用法及代碼示例
- Python SciPy fft.set_backend用法及代碼示例
- Python SciPy fft.idct用法及代碼示例
- Python SciPy fft.fft用法及代碼示例
- Python SciPy fft.get_workers用法及代碼示例
- Python SciPy fft.hfftn用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.fft.dct。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。