Развертывание atan против atan2 - PullRequest
0 голосов
/ 29 января 2019

Я могу извлечь фазу комплексного числа в Matlab, используя функции atan() или atan2().

atan() возвращается в интервале, ограниченном [-pi/2,pi/2], а atan2() возвращается в интервале, ограниченном [-pi,pi].

Я хочу посмотреть, смогу ли я развернуть извлеченную фазу в каждомв случае использования функции unwrap(), но unwrap действует только на фазе, извлеченной с помощью atan2().

R = 1; % Magnitude
theta = linspace(0,6*pi,100); % (radians) Angle array
theta_atan = zeros(1,length(theta)); % Prellocate for calculation 
theta_atan2 = zeros(1,length(theta)); % Prellocate for calculation
X = zeros(1,length(theta)); %Prelloc. 
Y = zeros(1,length(theta)); %Prelloc.   

for i = 1:length(theta)
    X(i) = R*cos(theta(i)); % Real part
    Y(i) = R*sin(theta(i)); % Imaginary part
    theta_atan(i) = atan(Y(i)/X(i)); 
    theta_atan2(i) = atan2(Y(i),X(i)); 
end  

Я строю развернутую извлеченную фазу, используя каждый метод:

figure(666)
plot(theta,unwrap(theta_atan));
hold on 
plot(theta,unwrap(theta_atan2));
legend('theta atan','theta atan2')
xlabel('input phase')
ylabel('extracted phase')

Однако, как вы можете видеть, развертывание эффективно только в случае atan2().Даже если я использую unwrap(theta_atan, pi/2) (в этом случае развертывание основано на приращениях pi / 2 вместо значения по умолчанию, pi), мне не удастся правильно развернуть фазу atan().

Fig.

1 Ответ

0 голосов
/ 29 января 2019

Второй аргумент unwrap - это не период входных данных, а допуск.Функция всегда разворачивает данные, предполагая интервал 2π.То есть он хочет видеть, что x(i)-x(i+1) больше, чем допуск перед развертыванием, и меньше после развертывания.В случае допуска pi/2, если, например, x(i)=0 и x(i+1)=3, скачок больше, чем допустимое отклонение, но добавление или вычитание 2*pi к x(i+1) не улучшает ситуацию.

Одним из обходных путей было бы умножить ввод на 2 и разделить на 2 после распаковки:

unwrap(theta_atan * 2) / 2

Однако всегда лучше использовать atan2 для получения угла.

...