Как получить фазовый угол из БПФ для амплитудно-модулированного сигнала

У меня есть измерения амплитудно-модулированного сигнала. Я проанализировал с помощью функции Matlab fft(). После того, как я все рассчитал по "книге", у меня осталась только одна проблема. Фаза модулированного сигнала не соответствует действительности. Только если я вычту pi/2 из рассчитанной фазы, я получу правильное значение. Модулированный сигнал представляет собой шестой компонент:

X[6]= -8,2257e+001 -1,6158e+002i
фаза(x[6])=atan(-8,2257e+001/-1,6158e+002)= 1,0999

Истинная фаза: pahse(x[6])-pi/2 = -0.4709

Почему я должен вычесть pi/2?если я использую ‹code›atan2(imag(X(6)),real(X  (6)))‹/code› если я использую ‹code›atan(imag(X(6))  /real(X(6)))-pi/2‹/код›

если я использую atan2(imag(X(6)),real(X(6))) - первое изображение

если я использую atan(imag(X(6))/real(X(6)))-pi/2 - второе изображение


person Elod    schedule 12.06.2013    source источник
comment
Вы используете atan или atan2? Ваш код использует atan, но вы пометили atan2.   -  person Doresoom    schedule 12.06.2013
comment
извините за ошибку, тега atan нет, но я использую fnc atan().   -  person Elod    schedule 12.06.2013
comment
Тогда используйте atan2. Проблема решена.   -  person Doresoom    schedule 12.06.2013
comment
Как и предложил @Rody Oldenhuis, но это не работает atan2(imagX,realX)=-2.04, но фаза -0,4709, как я упоминал выше.   -  person Elod    schedule 12.06.2013
comment
Вы уверены, что измерение не предполагало косинусы там, где вы используете синусы, или наоборот, или что-то в этом роде? Судя по этим числам, фазы измерения неверны...   -  person Rody Oldenhuis    schedule 13.06.2013


Ответы (1)


Вы испытываете двусмысленность квадрантов. Диапазон atan() составляет [-pi/2 ... +pi/2] с повторениями при выходе за пределы этого диапазона. Это означает, что вы не можете однозначно определить правильный квадрант вашего угла, когда этот угол оказывается на «другой стороне» круга.

Чтобы избежать подобных ситуаций, используйте angle (или phase) и/или atan2 (4-квадрантную версию atan):

>> X = -8.2257e+001 - 1.6158e+002i;
>> angle(X)
ans =
   -2.041680802478084e+000
>> atan2(imag(X), real(X))
ans =
   -2.041680802478084e+000
person Rody Oldenhuis    schedule 12.06.2013
comment
второй ans =-2.0..., но если я запускаю этот код, у меня будет большая разница фаз, чем раньше. Я точно знаю, что результат должен быть -0,4709 - person Elod; 12.06.2013
comment
@Elod: просто посмотрите на свои значения - минус 80 с чем-то в направлении x (реальная ось) и минус 160 с чем-то в направлении y (воображаемая ось), это угол примерно в 45 градусов за минус 90 градусов, следовательно, примерно минус 135 градусов (-2,3 с чем-то радиана). Так что ваши -0,4 радиана просто не имеют никакого смысла... - person Rody Oldenhuis; 12.06.2013
comment
Я полностью понимаю и согласен с вами, однако, если я использую этот фазовый сдвиг, результатом будет первое изображение, прикрепленное к моему сообщению. - person Elod; 12.06.2013