scipy.linalg.

dft#

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

Diskrete Fourier-Transformationsmatrix.

Erzeugt die Matrix, die die diskrete Fourier-Transformation einer Sequenz [1] berechnet. Die n-te primitive Einheitswurzel zur Erzeugung der Matrix ist exp(-2*pi*i/n), wobei i = sqrt(-1).

Parameter:
nint

Größe der zu erzeugenden Matrix.

scalestr, optional

Muss None, ‘sqrtn’ oder ‘n’ sein. Wenn scale ‘sqrtn’ ist, wird die Matrix durch sqrt(n) geteilt. Wenn scale ‘n’ ist, wird die Matrix durch n geteilt. Wenn scale None ist (Standard), wird die Matrix nicht normalisiert, und der Rückgabewert ist einfach die Vandermonde-Matrix der Einheitswurzeln.

Rückgabe:
m(n, n) ndarray

Die DFT-Matrix.

Hinweise

Wenn scale None ist, ist die Multiplikation eines Vektors mit der von dft zurückgegebenen Matrix mathematisch äquivalent zu (aber viel weniger effizient als) der Berechnung, die von scipy.fft.fft durchgeführt wird.

Hinzugefügt in Version 0.14.0.

Referenzen

Beispiele

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

Überprüfen Sie, ob m @ x dasselbe ist wie 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])