Синтаксис
numpy.arctan2(x1, x2, /, out=None, *, где=True, casting=`same_kind`, order=`K`, dtype =Нет, subok=True[, подпись, extobj]) = ufunc `arctan2`
- Параметры
- x1 array_like, вещественное значение
y-координаты.
- x2 array_like, действительное значение
x-координаты. Если
x1.shape != x2. shape
, они должны транслироваться в общую форму (которая становится формой вывода).- out ndarray, None или кортеж из ndarray и None, необязательно
Местоположение, в котором сохраняется результат. Если он предоставлен, он должен иметь форму, в которую транслируются входы. Если не указано или None, возвращается только что выделенный массив. Кортеж (возможен только в качестве аргумента ключевого слова) должен иметь длину, равную количеству выходных данных.
- где array_like, необязательный
Это условие передается по входу. В местах, где условие имеет значение True, массив out будет установлен на результат ufunc. В других местах массив out сохранит исходное значение. Обратите внимание, что если неинициализированный массив out создается с помощью
out=None< по умолчанию /span>
, места в нем, где условие имеет значение False, останутся неинициализированными.- **kwargs
Другие аргументы, содержащие только ключевые слова, см. в документации ufunc .
- Возвращает
- angle ndarray
Массив углов в радианах в диапазоне
[-pi, pi]
. Это скаляр, если и x1, и x2 являются скалярами.
Мы рассмотрим NumPy arctan2. Наряду с этим, для лучшего общего понимания, мы также рассмотрим его синтаксис и параметр. Затем мы увидим применение всей теоретической части на нескольких примерах. Но сначала попробуем проанализировать функцию через ее определение. Во-первых, arctan означает обратную функцию tan. Теперь функция
NumPy arctan2
помогает нам вычислить значение арктангенса между X1 и X2 в радианах. Здесь X1 и 2 — это параметры, которые мы обсудим позже. По мере того, как мы продвигаемся по этой статье, все становится для вас яснее. Далее рассмотрим синтаксис, связанный с ним.Метод numpy.arctan2() вычисляет поэлементный арктангенсArctan2 — обратная функция для 4 квадрантов. Принимая это во внимание, он дает значение от 0 до 2pi. Диапазон этой функции составляет от -180 до 180 градусов. Это 2 ключевых момента, которые отличают Arctan2 от особенностей арктанга.arr1
/arr2
и правильно выбирает квадрант. Квадрант выбирается таким образом, чтоarctan2(x1, x2)
представляет собой угол со знаком в радианах между лучом, оканчивающимся в начале координат и проходящим через точку(1, 0)
, и луч, заканчивающийся в начале координат и проходящий через точку(x2, x1)
.
Разница между Arctan и Arctan2
В этом разделе мы обсудим разницу между двумя функциями Numpy.NumPy arctan< /td> | NumPy arctan2 |
arctan2 — обратная функция для 4 квадрантов. | |
Диапазон функции arctan от -90 до 90 градусов. | Диапазон для arctan2 составляет от -180 до 180 градусов. |
Эта функция принимает один массив. | Это описанная функция принимает 2 входных массива. Теперь мы закончили с теоретической частью для NumPy arctan2. В этом разделе рассматривается, как работает эта функция и как она помогает нам получить желаемый результат. Мы начнем с элементарного примера и постепенно перейдем к более сложному примеру. Пример NumPy Arctan2импортировать numpy как ppool y=[1,1] x=[1,1.732] print(ppool.arctan2(y,x)) [0.78539816 0.52361148]Выше мы видим простой пример нашей функции arctan2. Теперь пройдемся по строчкам и поймем, как мы получили результат. Во-первых, мы импортировали функцию NumPy. Затем мы определили наши 2 набора массива. Используя синтаксис нашей функции и оператор печати, мы получаем желаемый результат. Здесь оба значения даны в радианах. Теперь, если вы хотите проверить результат в некоторой степени. Чтобы сделать это, нам нужно использовать этот конкретный метод: Угол в градусах = угол в радианах * 180/pi Если мы произведем вычисления по нашим результатам, мы получим 45 и 30 -градусный ответ. Здесь мы рассмотрели число пи до 3,14. Ответы совпадают, и поэтому результат проверяется. Numpy Arctan() Пример #2Теперь предположим, что мы также хотим получить значения в градусах. Это простой процесс, который можно выполнить с помощью цикла for и формулы, описанной выше. Давайте посмотрим, как:import numpy as ppool Degree=0 y=[-1,1.732] x=[2,1] b=ppool.arctan2(y,x) print(b) для значений в b: Degree= vals*(180/3.14) print(степень) Вывод:[-0.46364761 1.04718485] -26.578525356734104 60.02970472117416Посмотрите, как мы получаем значения в радианах и степени. Все шаги аналогичны первому примеру. С той лишь разницей, что мы использовали «цикл for». Если вам нужно что-то более простое, мы также можем использовать другой метод import numpy as ppool y=[-1,1,1.732] x=[2,1] b=ppool.arctan2(y,x)*(180/3.14) print (b)Здесь все, что вам нужно сделать, это умножить значение (180/3,14) или (180/ppool.pi) на массив. Вы определенно можете использовать этот метод в методе цикла for. Но в любом случае вы получите желаемый результат, который является значением градуса. Вывод:[-26.57852536 60.02970472] NumPy Arctan2 Пример #3def doa(self, Receiver, Source): ``` Вычисляет направление прихода относительно источника и получателя ``` s_ind = self.key2ind(source) r_ind = self.key2ind(receiver) # вектор от получателя к источнику v = self.X[:,s_ind] - self.X[: ,r_ind] азимут = NumPy Arctan2 Пример #4def mtx_freq2visi(M, p_mic_x, p_mic_y): """ построить матрицу, которая отображает ряд Фурье в видимость: param M: расширение ряда Фурье ограничено от -M до M:param p_mic_x: вектор, который содержит микрофоны с координатами x:param p_mic_y: вектор, который содержит микрофоны с координатами y:return: """ num_mic = p_mic_x.size ms = np.reshape(np.arange(- М , M + 1, step=1), (1, -1), order=`F`) G = np.zeros((num_mic * (num_mic - 1), 2 * M + 1), dtype=complex, порядок =`C`) count_G = 0 для q в диапазоне (num_mic): p_x_outer = p_mic_x[q] p_y_outer = p_mic_y[q] для qp в диапазоне (num_mic): если нет q == qp: p_x_qqp = p_x_outer - p_mic_x[qp ] p_y_qqp = p_y_outer - p_mic_y[qp] norm_p_qqp = np. sqrt(p_x_qqp ** 2 + p_y_qqp ** 2) phi_qqp = NumPy Arctan2 Пример #5def vector_angle(u, v, direction=None): ``` vector_angle(u, v) возвращает угол между двумя векторами u и v. Необязательный аргумент direction по умолчанию равен None, который указывает, что наименьший возможный сообщать угол между векторами; если векторы u и v являются двумерными векторами, а параметры направления True и False задают направления по часовой стрелке или против часовой стрелки соответственно; если векторы являются трехмерными векторами, то направление может быть трехмерной точкой, которая не находится в плоскости, содержащей u, v и начало координат, и указывает, вокруг какого направления (uxv или vxu) угол против часовой стрелки от u до v должен быть сообщен (вектор векторного произведения, который имеет положительное скалярное произведение с аргументом направления, используется в качестве оси вращения). ``` если направление равно None: вернуть np.arccos(vector_angle_cos(u, v)) elif direction равно True: вернуть NumPy Arctan2 Пример #6def __init__(self, line): data = line.split(` `) data[1:] = [float(x) for x in data[1:]] self.classname = data[0] self.xmin = data[1] self.ymin = data[2 ] self.xmax = data[1]+data[3] self.ymax = data[2]+data[4] self.box2d = np.array([self.xmin,self.ymin,self.xmax,self. ymax]) self.centroid = np.array([data[5],data[6],data[7]]) self.unused_dimension = np.array([data[8],data[9],data[10 ]]) self.w = data[8] self.l = data[9] self.h = data[10] self.orientation = np.zeros((3,)) self.orientation[0] = data[11 ] самоориентация[1] = data[12] self.heading_angle = -1 * np.arctan2 Пример #7def stanleyControl(state, cx, cy, cyaw, last_target_idx): """:param state: (State object):param cx: ([float]):param cy: ([float]): param cyaw: ([float]):param last_target_idx: (int):return: (float, int, float) """ # Ошибка перехода current_target_idx, error_front_axle = calcTargetIndex(state, cx, cy) if last_target_idx >= current_target_idx: current_target_idx = last_target_idx # theta_e исправляет ошибку направления theta_e = normalizeAngle(cyaw[current_target_idx] - state.yaw) # theta_d исправляет ошибку поперечного направления theta_d = np arctan2 Пример #8def calcTargetIndex(state, cx, cy): """:param state: (Объект состояния): param cx: [float]: param cy: [float]: return: (int, float) """ # Расчет положения передней оси fx = state.x + CAR_LENGTH * np.cos(state.yaw) fy = state.y + CAR_LENGTH * np.sin(state.yaw) # Поиск индекса ближайшей точки dx = [fx - icx для icx в cx] dy = [fy - icy для ледяного в cy] d = [np. sqrt(idx ** 2 + idy ** 2) для (idx, idy) в zip(dx, dy)] error_front_axle = min(d) target_idx = d.index(error_front_axle) target_yaw = normalizeAngle( NumPy Arctan2 Пример #9def Vehicle_flat_reverse(zflag, params={}): # Получить значения параметров b = params.get(`wheelbase`, 3.) # Создать вектор для хранения состояния и входных данных x = np.zeros(3) u = np.zeros(2) # Учитывая плоские переменные, найти состояние x[ 0] = zflag[0][0] # x position x[1] = zflag[1][0] # y position x[2] = np.arctan2 Пример #10def GetNeighborCells(self, p, nr, dp = None): ``` Возвращает все ячейки, не превышающие заданное расстояние в любом направлении от указанной ячейки p: Ячейка, из которой нужно получить соседей nr: Радиус соседей dp: Предпочтение направления ``` pi, pj, pk = p tqm = self.qm * self.qp nc = [(pi - i * tqm, pj - j * tqm, pk) для i в диапазоне (-nr, nr + 1) для j в диапазоне (-nr, nr + 1)], если dp не равно None: # Сортировка точек на основе предпочтительного направления dpa =В этой статье мы рассмотрим arctan2 NumPy. Кроме того, мы также видели его синтаксис и параметры. Для лучшего понимания мы рассмотрели несколько примеров. В конце концов, мы можем сделать вывод, что NumPy arctan2 — это функция, которая помогает нам найти обратное значение загара между двумя точками. По умолчанию он возвращает значение в радианах, но мы можем преобразовать его в градусы, используя описанные выше методы. Мы надеемся, что эта статья развеяла все ваши сомнения. Но если у вас остались нерешенные вопросы, не стесняйтесь записывать их в разделе комментариев. Прочитав это, почему бы не прочитать о следующей единичной матрице. Python atan или atan2, что мне использовать?Вопрос StackOverflowМоя формула f=arctan(ImZ/ReZ) Есть два варианта : Вариант 1 (атан): Вариант 2 (atan2) Почему эти два результата различаются? Ответ:Atan принимает один аргумент, а Atan2 принимает два аргумента. Цель использования двух аргументов вместо одного состоит в том, чтобы собрать информацию о знаках входных данных, чтобы вернуть соответствующий квадрант вычисленного угла, что невозможно. для Atan с одним аргументом Результат Atan2 всегда находится между -pi и pi. |