У меня есть вращающийся вектор R(x(t), y(t))
, и я хочу найти угол как функцию времени. atan2
определяется между -pi
и pi
, однако анализировать всю динамику мне неудобно. Итак, есть ли способ расширить atan2
с -inf
до inf
?
как переопределить функцию atan2 с -inf на inf в Matlab?
Ответы (2)
Ваш вопрос не очень ясен, но я предполагаю, что вы ищете функцию unwrap а>. Это исправит все 2 pi
скачки, которые вы получаете, когда ваш вектор вращается вокруг отрицательной оси x. Вы используете его так:
t = linspace(0,3,1000);
x = cos(2*pi*t);
y = sin(2*pi*t);
phi = atan2(y,x);
unwrapped_phi = unwrap(phi);
plot(t, phi, t, unwrapped_phi)
xlabel('time (s)')
ylabel('angle (rad)')
legend('wrapped angle','unwrapped angle')
person
Bas Swinckels
schedule
17.11.2013
Я полагаю, что вы ищете развертку фазы. У Matlab есть готовое 1D-решение, см. unwrap для получения дополнительной информации.
person
Shai
schedule
17.11.2013