idct#
- scipy.fft.idct(x, type=2, n=None, axis=-1, norm=None, overwrite_x=False, workers=None, orthogonalize=None)[source]#
返回任意類型序列的反離散餘弦轉換。
- 參數:
- x類陣列
輸入陣列。
- type{1, 2, 3, 4}, 選填
DCT 的類型(請參閱「注意事項」)。預設類型為 2。
- n整數, 選填
轉換的長度。如果
n < x.shape[axis]
,則會截斷 x。如果n > x.shape[axis]
,則會對 x 進行零填充。預設結果為n = x.shape[axis]
。- axis整數, 選填
計算 idct 的軸;預設值是最後一個軸(即
axis=-1
)。- norm{“backward”, “ortho”, “forward”}, 選填
正規化模式(請參閱「注意事項」)。預設值為 “backward”。
- overwrite_x布林值, 選填
如果為 True,則可以破壞 x 的內容;預設值為 False。
- workers整數, 選填
用於平行計算的最大工作進程數。如果為負數,則值會從
os.cpu_count()
環繞。有關更多詳細資訊,請參閱fft
。- orthogonalize布林值, 選填
是否使用正交化的 IDCT 變體(請參閱「注意事項」)。當
norm="ortho"
時,預設值為True
,否則為False
。在 1.8.0 版本中新增。
- 返回:
- idct實數的 ndarray
轉換後的輸入陣列。
另請參閱
dct
正向 DCT
注意事項
對於單維陣列 x,
idct(x, norm='ortho')
等於 MATLABidct(x)
。警告
對於
type in {1, 2, 3}
,norm="ortho"
會破壞與反向直接傅立葉轉換的直接對應關係。若要恢復它,您必須指定orthogonalize=False
。對於
norm="ortho"
,dct
和idct
都會在兩個方向上按相同的整體因數縮放。依預設,轉換也會被正交化,這對於類型 1、2 和 3 意味著修改了轉換定義,以提供 IDCT 矩陣的正交性(完整定義請參閱dct
)。「The」 IDCT 是 IDCT-II,它與正規化的 DCT-III 相同。
IDCT 等同於一般 DCT,只是正規化和類型不同。DCT 類型 1 和 4 是它們自己的反函數,而 DCT 類型 2 和 3 互為反函數。
範例
類型 1 DCT 等同於用於實數、偶對稱輸入的 DFT。輸出也是實數且偶對稱。IFFT 輸入的一半用於產生 IFFT 輸出的一半
>>> from scipy.fft import ifft, idct >>> import numpy as np >>> ifft(np.array([ 30., -8., 6., -2., 6., -8.])).real array([ 4., 3., 5., 10., 5., 3.]) >>> idct(np.array([ 30., -8., 6., -2.]), 1) array([ 4., 3., 5., 10.])