当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy fftpack.dct用法及代码示例


本文简要介绍 python 语言中 scipy.fftpack.dct 的用法。

用法:

scipy.fftpack.dct(x, type=2, n=None, axis=-1, norm=None, overwrite_x=False)#

返回任意类型序列 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 {无,‘ortho’},可选

标准化模式(见注释)。默认为无。

overwrite_x 布尔型,可选

如果为 True,则 x 的内容可以被销毁;默认为假。

返回

y 真实的ndarray

转换后的输入数组。

注意

对于一维数组 xdct(x, norm='ortho') 等于 MATLAB dct(x)

理论上有 8 种类型的 DCT,只有前 4 种类型在 scipy 中实现。 ‘The’DCT一般指DCT类型2,‘the’逆DCT一般指DCT类型3。

第一类

DCT-I有几个定义;我们使用以下内容(对于 norm=None )

如果norm='ortho'x[0]x[N-1]乘以缩放因子 ,并且y[k]乘以缩放因子f

注意

DCT-I 仅支持输入大小 > 1。

Ⅱ型

DCT-II有几个定义;我们使用以下内容(对于 norm=None )

如果 norm='ortho'y[k] 乘以缩放因子 f

这使得相应的系数矩阵正交(O @ O.T = np.eye(N))。

第三类

有几个定义,我们使用以下(对于norm=None)

或者,对于norm='ortho'

(未归一化的)DCT-III 是(未归一化的)DCT-II 的倒数,最大因子为 2N。正交归一化的DCT-III 与正交归一化的DCT-II 正好相反。

Ⅳ型

DCT-IV有几个定义;我们使用以下内容(对于 norm=None )

如果 norm='ortho'y[k] 乘以缩放因子 f

参考

[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.fftpack 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.])

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.fftpack.dct。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。