Результат atan2 не гладкий - PullRequest
0 голосов
/ 29 января 2019

Я использую atan2 (в MATLAB) для вычисления углов, а затем я беру градиент угла.Я вижу, что угол не является гладким в таких местах, как pi и pi / 2, но это не видно на графике.Затем, построение градиента угла показывает большие отрицательные пики.Я могу игнорировать их, устанавливая пределы графика (ylim), но это не хорошее общее решение.Можно ли как-то избежать проблемы сглаживания или сгладить угол после вычисления?

Вот еще немного фона.Я использую числовой решатель ODE (в частности, SUNDIALS CVODE) для вычисления планетарных орбит в двумерном случае, поэтому в результате получим два зависящих от времени вектора, назовем их x и y.Тогда atan2 дает мне угол, а градиент угла дает мне угловую скорость.Я попробовал MATLAB smoothdata, но это не помогло решить проблему.

Код только MATLAB atan2 и gradient, за исключением вычисления орбит, но это не должно бытьотношение к этому вопросу.

Мне нужно избавиться от отрицательных пиков угловой скорости.

1 Ответ

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

Если вы знаете, что величина вашего углового градиента всегда должна быть меньше чем пи (или какой-то другой порог между пи и двумя пи), тогда вы можете исправить градиент, grad, следующим образом:

if grad < pi
    grad = grad + 2 * pi;
elseif grad > pi
    grad = grad - 2 * pi;
end

Если у вас нет такой гарантии, вам нужно будет предположить, что градиент изменяется плавно, что требует более сложной коррекции.

...