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
dftzurückgegebenen Matrix mathematisch äquivalent zu (aber viel weniger effizient als) der Berechnung, die vonscipy.fft.fftdurchgeführt wird.Hinzugefügt in Version 0.14.0.
Referenzen
[1]„DFT-Matrix“, https://en.wikipedia.org/wiki/DFT_matrix
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 @ xdasselbe ist wiefft(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])