scipy.linalg.dft¶
- scipy.linalg.dft(n, scale=None)[源代码]¶
离散傅立叶变换矩阵。
创建计算序列的离散傅立叶变换的矩阵 [1]. 用于生成矩阵的第n个本原单位根是exp(-2 pi i/n),其中i=sqrt(-1)。
- 参数
- n集成
调整要创建的矩阵的大小。
- scale字符串,可选
必须为None、‘sqrtn’或‘n’。如果 scale 为“sqrtn”,则矩阵除以 sqrt(n) 。如果 scale 为“n”,则矩阵除以 n 。如果 scale 为None(默认值),则矩阵不规范化,返回值只是单位根的Vandermonde矩阵。
- 退货
- m(n,n)ndarray
DFT矩阵。
注意事项
什么时候 scale 为None,则将向量乘以
dft
在数学上等同于(但效率远低于)由scipy.fft.fft
。0.14.0 新版功能.
参考文献
示例
>>> 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])