несоответствие arctan2 в NumPy - PullRequest
       106

несоответствие arctan2 в NumPy

1 голос
/ 27 февраля 2020

Я столкнулся с загадочной проблемой при использовании arctan2 в Numpy. Поиск ошибок atan2 не дал ответа на этот вопрос, но кто-то может знать причину этого.

f = np.arange(0,100)
w = 2*np.pi*f/50
x = np.arctan2(sin(-w*d/2)*cos(w*d/2), cos(w*d/2)*cos(w*d/2))

дает различные результаты для

f = np.arange(0,100)
w = 2*np.pi*f/50
x = np.arctan2(sin(-w*d/2), cos(w*d/2))

Первое значение смещено на $ пи $ каждый период. Выглядит как проблема с цифрой c, но я не видел заметок по этому конкретному случаю.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

atan2 (y, x) дает угол между осью x и вектором x, y. Следовательно, atan2 (y, x) и atan2 (a y, a x) одинаковы тогда и только тогда, когда a> 0. Например, atan2 (y, x) равно pi / 4, но atan2 (-1 * y, -1 * x) равно -3pi / 4.

0 голосов
/ 27 февраля 2020

Обратите внимание, что ошибка, по-видимому, вызвана отрицательным значением в коэффициенте cos (). Это рассчитывается правильно.

H = np.arctan2(sin(-w*d/2)*abs(cos(w*d/2)), cos(w*d/2)*abs(cos(w*d/2)))
...