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


Python SciPy linalg.dft用法及代码示例


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

用法:

scipy.linalg.dft(n, scale=None)#

离散傅里叶变换矩阵。

创建计算序列 [1] 的离散傅立叶变换的矩阵。用于生成矩阵的第 n 个原始单位根是 exp(-2*pi*i/n),其中 i = sqrt(-1)。

参数

n int

调整要创建的矩阵的大小。

scale str,可选

必须为“无”、‘sqrtn’ 或‘n’。如果比例为‘sqrtn’,则矩阵除以 sqrt(n)。如果比例为‘n’,则矩阵除以 n。如果scale为None(默认值),则矩阵不会标准化,并且返回值只是单位根的Vandermonde矩阵。

返回

m (n, n) 数组

DFT 矩阵。

注意

什么时候规模为无,将向量乘以返回的矩阵dft在数学上等同于(但效率远低于)由scipy.fft.fft.

参考

例子

>>> import numpy as np
>>> from scipy.linalg import dft
>>> np.set_printoptions(precision=2, suppress=True)  # for compact output
>>> m = dft(5)
>>> m
array([[ 1.  +0.j  ,  1.  +0.j  ,  1.  +0.j  ,  1.  +0.j  ,  1.  +0.j  ],
       [ 1.  +0.j  ,  0.31-0.95j, -0.81-0.59j, -0.81+0.59j,  0.31+0.95j],
       [ 1.  +0.j  , -0.81-0.59j,  0.31+0.95j,  0.31-0.95j, -0.81+0.59j],
       [ 1.  +0.j  , -0.81+0.59j,  0.31-0.95j,  0.31+0.95j, -0.81-0.59j],
       [ 1.  +0.j  ,  0.31+0.95j, -0.81+0.59j, -0.81-0.59j,  0.31-0.95j]])
>>> x = np.array([1, 2, 3, 0, 3])
>>> m @ x  # Compute the DFT of x
array([ 9.  +0.j  ,  0.12-0.81j, -2.12+3.44j, -2.12-3.44j,  0.12+0.81j])

验证 m @ x 是否与 fft(x) 相同。

>>> from scipy.fft import fft
>>> fft(x)     # Same result as m @ x
array([ 9.  +0.j  ,  0.12-0.81j, -2.12+3.44j, -2.12-3.44j,  0.12+0.81j])

相关用法


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