python scipy实例_python scipy fft.dct用法及代码示例

返回任意类型序列x的离散余弦变换。

参数:

x:array_like输入数组。

type:{1, 2, 3, 4}, 可选参数DCT的类型(请参阅注释)。预设类型为2。

n:int, 可选参数转换的长度。如果n < x.shape[axis],x被截断。如果n > x.shape[axis],x是zero-padded。默认结果为n = x.shape[axis]。

axis:int, 可选参数计算dct的轴;默认值位于最后一个轴上(即,axis=-1)。

norm:{None, ‘ortho’}, 可选参数规范化模式(请参阅注释)。默认为无。

overwrite_x:bool, 可选参数如果为True,则x的内容可以被销毁;默认值为False。

workers:int, 可选参数用于并行计算的最大工人数。如果为负,则值从os.cpu_count()。参考fft更多细节。

返回值:

y:实数ndarray转换后的输入数组。

注意:

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

对于norm=None,没有扩展dct和idct被缩放1/N其中N是DCT的“logical”大小。对于norm='ortho'两个方向都按相同因子缩放1/sqrt(N)。

理论上,DCT有8种类型,只有前4种类型可以实现。 ‘The’ DCT通常是指DCT类型2,而‘the’ Inverse DCT通常是指DCT类型3。

一类

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

如果norm='ortho',x[0]和x[N-1]乘以比例因子和y[k]乘以比例因子f

注意

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

第二类

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

如果norm='ortho',y[k]乘以比例因子f

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

III型

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

或者,norm='ortho'

(未归一化的)DCT-III是(未归一化的)DCT-II的逆,最大为2N。正交化的DCT-III恰好是正交化的DCT-II的逆。

IV型

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

如果norm='ortho',y[k]乘以比例因子f

参考文献:

1

IEEE Transactions关于声学,语音和信号处理的J. Makhoul撰写的“一维和二维快速余弦变换”。 28(1),第27-34页,DOI:10.1109 /TASSP.1980.1163351(1980)。

2

例子:

对于实际的even-symmetrical输入,类型1 DCT等效于FFT(虽然更快)。输出也是实数和even-symmetrical。一半的FFT输入用于生成一半的FFT输出:

>>> from scipy.fft import fft, dct

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值