numpy.fft() quelle est la valeur de retour d'amplitude + décalage de phase OU de l'angle?
De la np.fft.fft() retourne un ensemble complexe .... quelle est la signification du nombre complexe ?
Je suppose que la partie réelle est l'amplitude !
La partie imaginaire est la phase-shift ? phase-angle ? Ou quelque chose d'autre !
J'ai compris la position dans le tableau représentent la fréquence.
généralement à l'interprétation d'une fft vous serait de la parcelle 20*log(abs(fft(x)), ce qui prend de la grandeur des nombres complexes et la met dans une échelle de dB
OriginalL'auteur sten | 2015-02-19
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas vraiment une question de programmation, et n'est pas spécifique à
numpy
. Brièvement, la valeur absolue d'un nombre complexe (sqrt(x.real**2 + x.imag**2)
, ounumpy.abs()
) est l'amplitude.Plus détaillée, lorsque vous appliquez la FFT à un tableau
X
(qui, disons, contient un certain nombre d'échantillons d'une fonctionX(t)
à différentes valeurs det
), vous essayez de le représenter comme une somme de "ondes planes"exp(i w t)
(oùi
est un imaginaire de l'unité, etw
est une vraie valeur de la fréquence) avec différentes valeurs dew
. Qui est, vous voulez quelque chose commeUne FFT vous renvoie ces coefficients
A
,B
etc correspondant à certaines fréquences fixesw1
,w2
etc (ennumpy
, vous pouvez obtenir leurs valeurs de fftfreq()).Maintenant, ces coefficients sont, en général, complexe. Un nombre complexe
A
peut être représenté comme une combinaison de "amplitude" et "phase":où
r
(== numpy.abs(A)
) est l'amplitude, etp
(== numpy.angle(A)
) est la phase, les deux valeurs réelles. Si l'on remplace dans l'expression de la FFT expansion, vous obtenezAinsi, l'amplitude
r
les changements de la valeur absolue du terme, et la phasep
, bien, décale la phase. Par conséquent, afin d'obtenir la matrice des amplitudes à partir du résultat d'une FFT, vous avez besoin d'appliquernumpy.abs
.Mais je voudrais vraiment vous suggérons de lire quelque chose sur la FFT la théorie, il y a beaucoup d'informations autour de, par exemple wiki.
OriginalL'auteur fjarri
Le tableau de valeurs vous obtenez est, comme pour toute DFT mise en œuvre, je suis au courant, un tableau de nombres complexes. Un nombre complexe a une norme, ce qui correspond à l'amplitude. Et il a un angle dans le plan complexe (parfois appelé argument), selon les parties réelles et imaginaires. Cet angle correspond à la phase. Le plan complexe (à partir de Wolfram docs):
Donc, votre tableau contient
x
ety
, les parties réelles et imaginaires. Vous êtes intéressé par l'angletheta
. Il peut être calculée comme suit:tan(theta) = y/x
theta = arctan(y/x)
Cela donne l'angle en radians. Vous pourriez également jeter un coup d'oeil à numpy.angle().
OriginalL'auteur Jan-Philip Gehrcke
L'ampleur, r, à une fréquence donnée représente le montant de cette fréquence dans le signal d'origine. Le complexe argument représente l'angle de phase, thêta.
x + i*y = r * exp(i*theta)
Où x et y sont des nombres que l'numpy FFT retourne.
OriginalL'auteur wrdeman