Składnia
numpy.arctan2(x1, x2, /, out=Brak, *, gdzie=Prawda, przesyłanie=„same_kind”, kolejność=„K”, dtype =Brak, subok=Prawda[, podpis, extobj]) = ufunc `arctan2`
- Parametry
- x1 podobny do tablicy, o wartości rzeczywistej
y-współrzędne.
- x2 podobne do tablicy, wartości rzeczywiste
x-współrzędne. Jeśli
x1.shape != x2. shape
, muszą być możliwe do rozgłaszania do wspólnego kształtu (który staje się kształtem wyjścia).- out ndarray, None lub krotka ndarray i None, opcjonalnie
Lokalizacja, w której jest przechowywany wynik. Jeśli jest podany, musi mieć kształt, do którego nadawane są wejścia. Jeśli nie podano lub Brak, zwracana jest świeżo przydzielona tablica. Krotka (możliwa tylko jako argument słowa kluczowego) musi mieć długość równą liczbie wyjść.
- gdzie array_like, opcjonalnie
Ten warunek jest transmitowany przez wejście. W lokalizacjach, w których warunek ma wartość True, tablica out zostanie ustawiona na wynik ufunc. W innym miejscu tablica out zachowa swoją pierwotną wartość. Pamiętaj, że jeśli niezainicjowana tablica out zostanie utworzona za pomocą domyślnej
out=None
, lokalizacje, w których warunek jest fałszywy, pozostaną niezainicjowane.- **kwargs
W przypadku innych argumentów zawierających tylko słowa kluczowe zobacz ufunc doc .
- Zwroty
- kąt ndarray
Tablica kątów w radianach, w zakresie
[-pi, pi]
. Jest to skalar, jeśli oba x1 i x2 są skalarami.
Omówimy NumPy arctan2. Wraz z tym, dla lepszego ogólnego zrozumienia, przyjrzymy się również jego składni i parametrom. Następnie zobaczymy zastosowanie całej części teoretycznej na kilku przykładach. Ale najpierw spróbujmy przeanalizować funkcję poprzez jej definicję. Po pierwsze arctan oznacza odwrotność funkcji tan. Teraz funkcja
NumPy arctan2
pomaga nam obliczyć wartość arc tan pomiędzy X1 i X2 w radianach. Tutaj X1 i 2 to parametry, które omówimy później. W miarę postępów w tym artykule wszystko stanie się dla Ciebie jaśniejsze. Następnie spójrzmy na skojarzoną z nim składnię.Metoda numpy.arctan2() oblicza arcus tangens elementuArctan2 to 4-kwadrantowa funkcja odwrotna. Biorąc to pod uwagę, daje wartość od 0 do 2pi. Zakres tej funkcji wynosi od -180 do 180 stopni. Są to 2 kluczowe punkty, które odróżniają Arctan2 od funkcji arctan.arr1
/arr2
i prawidłowo wybiera kwadrant. Kwadrant jest tak wybrany, żearctan2(x1, x2)
jest kątem znaku w radianach między promieniem kończącym się w początku i przechodzącym przez punkt(1, 0)
i promień kończący się na początku i przechodzący przez punkt(x2, x1)
.
Różnica między Arctan i Arctan2
W tej sekcji omówimy różnicę między 2 funkcjami Numpy.NumPy arctan< /td> | NumPy arctan2 | ||
arctan2 to funkcja odwrotna z 4 kwadrantami. | |||
Zakres funkcji arctan wynosi od -90 do 90 stopni. | Zakres dla arctan2 wynosi od -180 do 180 stopni. | ||
Ta funkcja akceptuje pojedynczą tablicę. | To funkcja jak omówiono weź 2 tablice wejściowe. Teraz zakończyliśmy część teoretyczną dotyczącą NumPy arctan2. W tej sekcji omówiono, jak działa ta funkcja i jak pomaga nam uzyskać żądane dane wyjściowe. Zaczniemy od podstawowego przykładu i stopniowo przejdziemy do bardziej skomplikowanego przykładu. Przykład NumPy Arctan2import numpy jako ppool y=[1,1] x=[1,1.732] print(ppool.arctan2(y,x)) [0.78539816 0.52361148]Powyżej widzimy prosty przykład naszej funkcji arctan2. Przejdźmy teraz linia po linii i zrozummy, jak otrzymaliśmy wynik. Najpierw zaimportowaliśmy funkcję NumPy. Następnie zdefiniowaliśmy nasze 2 zestawy tablicy. Używając składni naszej funkcji i instrukcji print, otrzymujemy żądany wynik. Tutaj obie wartości są podane w radianach. Teraz, jeśli chcesz do pewnego stopnia sprawdzić wynik. Aby to zrobić, musimy użyć tej konkretnej metody: Kąt w stopniach = kąt w radianach * 180/pi Jeśli wykonujemy obliczenia na naszych wynikach, otrzymujemy 45 i 30 -stopień odpowiedzi. Tutaj rozważaliśmy pi do 3,14. Odpowiedzi są zgodne i dlatego wynik jest weryfikowany. Numpy Arctan() Przykład nr 2Przypuśćmy teraz, że chcemy również uzyskać wartości „Ę” w stopniach. Jest to prosty proces i można go wykonać za pomocą pętli for i wzoru omówionego powyżej. Zobaczmy jak:importuj numpy jako ppool degree=0 y=[-1,1.732] x=[2,1] b=ppool.arctan2(y,x) print(b) for vals in b: degree= vals*(180/3,14) print(stopień) Wyjście:[-0.46364761 1.04718485] -26.578525356734104 60.02970472117416Zobacz jak otrzymujemy wartości w radianach i stopnie. Wszystkie kroki są podobne do pierwszego przykładu. Jedyną różnicą jest użycie „pętli for”. Jeśli chcesz czegoś prostszego, możemy również użyć innej metody import numpy jako ppool y=[-1,1.732] x=[2,1] b=ppool.arctan2(y,x)*(180/3.14) print (b)Tutaj wystarczy pomnożyć wartość (180 / 3.14) lub (180 / ppool.pi) przez tablicę. Zdecydowanie możesz użyć tej metody w metodzie pętli for. Ale tak czy inaczej, otrzymasz pożądany wynik, który jest wartością w stopniach. Wyjście:[-26.57852536 60.02970472] NumPy Arctan2 Przykład #3def doa(self, receiver, source): ``` Oblicza kierunek nadejścia do źródła i odbiornika ``` s_ind = self.key2ind(źródło) r_ind = self.key2ind(odbiorca) # wektor od odbiornika do źródła v = self.X[:,s_ind] - self.X[: ,r_ind] azymut = NumPy Arctan2 Przykład #4def mtx_freq2visi(M, p_mic_x, p_mic_y): """ zbuduj macierz, która odwzorowuje szereg Fouriera na widzialność:param M: rozwinięcie szeregu Fouriera jest ograniczone od -M do M:param p_mic_x: wektor zawierający mikrofony x coordinates:param p_mic_y: wektor zawierający mikrofony y coordinate:return: """ num_mic = p_mic_x.size ms = np.reshape(np.arange(- m , M + 1, step=1), (1, -1), order=`F`) G = np.zeros((num_mic * (num_mic - 1), 2 * M + 1), dtype=complex, order =`C`) count_G = 0 dla q w zakresie(num_mic): p_x_outer = p_mic_x[q] p_y_outer = p_mic_y[q] dla qp w zakresie(num_mic): jeśli nie 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 Przykład #5def vector_angle(u, v, direction=None): ``` vector_angle(u, v) zwraca kąt między dwoma wektorami u i v. Opcjonalnym argumentem kierunku jest domyślnie None, co określa najmniejszy możliwy należy podać kąt między wektorami; jeśli wektory u i v są wektorami 2D, a parametry kierunku Prawda i Fałsz określają odpowiednio kierunek zgodny lub przeciwny do ruchu wskazówek zegara; jeśli wektory są wektorami 3D, to kierunek może być punktem 3D, który nie znajduje się na płaszczyźnie zawierającej u, v i początek i określa, wokół którego kierunku (uxv lub vxu) kąt przeciwny do ruchu wskazówek zegara od u do v należy zgłosić (wektor iloczynu krzyżowego, który ma dodatni iloczyn skalarny z argumentem kierunku jest używany jako oś obrotu). ``` jeśli kierunek to Brak: return np.arccos(vector_angle_cos(u, v)) kierunek elif to True: return NumPy Arctan2 Przykład #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 = dane[1]+dane[3] self.ymax = dane[2]+dane[4] self.box2d = np.array([self.xmin,self.ymin,self.xmax,self. ymax]) self.centroid = np. tablica([dane[5],dane[6],dane[7]]) self.unused_dimension = np.array([dane[8],dane[9],dane[10 ]]) self.w = dane[8] self.l = dane[9] self.h = dane[10] self.orientation = np.zeros((3,)) self.orientation[0] = data[11 ] samo.orientacja[1] = data[12] self.heading_angle = -1 * np.arctan2 Przykład #7def stanleyControl(state, cx, cy, cyaw, last_target_idx): """:param state: (obiekt stanu):param cx: ([float]):param cy: ([float]): param cyaw: ([float]):param last_target_idx: (int):return: (float, int, float) """ # Błąd śledzenia 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 koryguje błąd nagłówka theta_e = normalizeAngle(cyaw[current_target_idx] - state.yaw) # theta_d koryguje błąd cross track theta_d = np arctan2 Przykład #8def calcTargetIndex(state, cx, cy): """:param state: (obiekt stanu):param cx: [zmiennoprzecinkowa]:param cy: [zmiennoprzecinkowa]:zwrot: (int, float) """ # Oblicz położenie przedniej osi fx = state.x + CAR_LENGTH * np.cos(state.yaw) fy = state.y + CAR_LENGTH * np.sin(state.yaw) # Wyszukaj indeks najbliższego punktu dx = [fx - icx dla icx w cx] dy = [fy - icy dla icy w cy] d = [np. sqrt(idx ** 2 + idy ** 2) for (idx, idy) w zip(dx, dy)] error_front_axle = min(d) target_idx = d.index(error_front_axle) target_yaw = normalizeAngle( NumPy Arctan2 Przykład #9def vehicle_flat_reverse(zflag, params={}): # Pobierz wartości parametrów b = params.get(`rozstaw osi`, 3.) # Utwórz wektor do przechowywania stanu i danych wejściowych x = np.zeros(3) u = np.zeros(2) # Biorąc pod uwagę płaskie zmienne, znajdź stan x[ 0] = zflag[0][0] # x pozycja x[1] = zflag[1][0] # y pozycja x[2] = np.arctan2 Przykład #10def GetNeighborCells(self, p, nr, dp = Brak): ``` Zwraca wszystkie komórki nie większe niż podana odległość w dowolnym kierunku od określonej komórki p: Komórka, z której mają zostać pobrane sąsiedzi nr: Promień sąsiada dp: Preferencja kierunku ``` pi, pj, pk = p tqm = self.qm * self.qp nc = [(pi - i * tqm, pj - j * tqm, pk) dla i w przedziale(-nr, nr + 1) dla j w przedziale(-nr, nr + 1)] jeśli dp nie jest Brak: #Sortuj punkty na podstawie preferencji kierunku dpa =W tym artykule omówimy arctan2 NumPy. Ponadto zobaczyliśmy również jego składnię i parametry. Dla lepszego zrozumienia zobaczyliśmy kilka przykładów. Na koniec możemy stwierdzić, że NumPy arctan2 jest funkcją, która pomaga nam znaleźć odwrotną wartość tan między 2 punktami. Domyślnie zwraca wartość w radianach, ale możemy ją przekonwertować na stopnie, korzystając z metod omówionych powyżej. Mamy nadzieję, że ten artykuł wyjaśnił wszystkie Twoje wątpliwości. Ale jeśli masz jakieś nierozwiązane pytania, możesz je zapisać w sekcji komentarzy. Po przeczytaniu, dlaczego nie przeczytać o następującej macierzy tożsamości. Python atan czy atan2, czego mam użyć?Pytanie StackOverflowMoja formuła f=arctan(ImZ/ReZ) Są dwie opcje : Opcja 1 (atan): Opcja 2 (atan2) Dlaczego te dwa wyniki są różne? Odpowiedź:Atan przyjmuje jeden argument, a Atan2 dwa argumenty. Celem użycia dwóch argumentów zamiast jednego jest zebranie informacji o znakach wejść w celu zwrócenia odpowiedniej ćwiartki obliczonego kąta, co nie jest możliwe dla jednoargumentowego Atana Wynik Atan2 jest zawsze pomiędzy -pi i pi. Odniesienie: https://en.wikipedia.org/wiki/Atan2 Wersja zarchiwizowana numpy.arctan2 (arr1, arr2, rzutowanie = & # 39; same_rodzaj & # 39 ;, kolejność = & # 39; K & # 39 ;, dtype = Brak, ufunc & # 39; arctan & # 39;):
Kod nr 1: Praca
|