2017-08-11 9 views
0

J'essaie de calculer l'angle de phase dans le domaine fréquentiel (après le calcul fft) de la deuxième composante du spectre de Fourier d'un signal synthétique construit par moi dans l'espace de travail de Matlab. Je suis sûr que la phase est égale à 0 (comme vous pouvez le voir dans le code), mais le résultat obtenu est pi/2. Le code est le suivant:Calcul de l'angle de phase dans fft matlab

t = 0:pi/128:(2 * pi - pi/128); 
V = sin(t); 
L = length(V); 
n = 2^nextpow2(L); 
Y = fft(V, n); 
threshold = max(abs(Y))/10000; 
Y(abs(Y)<threshold) = 0; 
mag = abs(Y/n); 
angle = rad2deg(atan2(imag(Y),real(Y))); 

Je ne vois pas où l'erreur est.

+0

Pourquoi êtes-vous sûr que la phase est égal à zéro? – applesoup

+0

En prenant en compte l'onde sinusoïdale standard (A * sin (wt + phi), où A est l'amplitude, w est la fréquence en radians, et phi est la phase initiale), la phase du signal de la ligne 2 est nulle. –

+0

Ah, je vois que la séquence originale est périodique avec la longueur DFT. J'ai ajouté une réponse - répond-elle à votre question? – applesoup

Répondre

1

Vous vous trompez sur le fait que la phase d'une onde sinusoïdale réelle avec une fréquence correspondant à la fréquence centrale du bac (et pas de décalage de phase) est nulle. Les fonctions de base représentant la partie réelle de la séquence d'origine sont des fonctions cosinus.

pour représenter une onde sinusoïdale avec une onde cosinusoïdale un déphasage de pi/2 doit être soustraite:

sin (x) = cos (x - pi/2). Par conséquent, la phase dans la corbeille 2 (correspondant à la fréquence de la séquence d'origine) est -pi/2. Par conséquent, la phase dans la corbeille 2 (correspondant à la fréquence de la séquence d'origine) est -pi/2.

(Pour une explication plus approfondie voir this question on DSP.SE.)

+0

Oui, votre réponse répond à ma question. Merci beaucoup! –