Sözdizimi
numpy.arctan2(x1, x2, /, out=None, *, nerede=Doğru, casting=`same_type`, order=`K`, dtype =Yok, subok=Doğru[, imza, extobj]) = ufunc `arctan2`
- Parametreler
- x1 array_like, gerçek değerli
y-koordinatlar.
- x2 array_like, gerçek değerli
x-koordinatları.
x1.shape != x2 ise. şekil
, ortak bir şekle (çıktının şekli haline gelen) yayınlanabilir olmalıdırlar.- ndarray, None veya ndarray ve None`ın demeti, isteğe bağlı
Sonucun depolandığı konum. Sağlanırsa, girişlerin yayın yaptığı bir şekle sahip olmalıdır. Sağlanmadıysa veya Yok ise, yeni tahsis edilmiş bir dizi döndürülür. Bir tanımlama grubu (yalnızca bir anahtar kelime bağımsız değişkeni olarak mümkündür), çıktı sayısına eşit uzunluğa sahip olmalıdır.
- burada array_like, isteğe bağlı
Bu koşul giriş üzerinden yayınlanır. Koşulun True olduğu yerlerde, out dizisi ufunc sonucuna ayarlanacaktır. Başka yerlerde, out dizisi orijinal değerini koruyacaktır. Başlatılmamış bir out dizisinin varsayılan
out=None< aracılığıyla oluşturulduğunu unutmayın. /span>
, içinde koşulun False olduğu konumlar başlatılmamış olarak kalacaktır.- **kwargs
Diğer yalnızca anahtar kelime bağımsız değişkenleri için ufunc belgelerine bakın .
- Dönüşler
- açı ndarray
Rayan cinsinden,
dd>[-pi, pi]
. Hem x1 hem de x2 skaler ise bu bir skalerdir.
NumPy arctan2`yi ele alacağız. Bununla birlikte, daha iyi bir genel anlayış için sözdizimine ve parametresine de bakacağız. Daha sonra bazı örnekler üzerinden teorik kısmın tamamının uygulamasını göreceğiz. Ama önce, fonksiyonu tanımı üzerinden analiz etmeye çalışalım. İlk olarak, arctan, bir tan fonksiyonunun tersi anlamına gelir. Şimdi
NumPy arctan2
işlevi, radyan cinsinden X1 ve X2 arasındaki ark tan değerini hesaplamamıza yardımcı olur. Burada X1 ve 2 daha sonra tartışacağımız parametrelerdir. Bu makale boyunca ilerledikçe, işler sizin için daha net hale gelecektir. Ardından, onunla ilişkili sözdizimine bakalım.numpy.arctan2() yöntemi,Arctan2, 4 kadranlı bir ters fonksiyondur. Bunu dikkate alarak 0 ile 2pi arasında bir değer verir. Bu işlevin aralığı -180 ila 180 derecedir. Bunlar Arctan2`yi arctan özelliklerinden ayıran 2 kilit noktadır.arr1
/öğesinin eleman bazında arktanjantını hesaplar. arr2
ve kadranı doğru seçer. Çeyrek,arctan2(x1, x2)
, orijinde biten ve(1, 0)
noktasından geçen ışın arasındaki radyan cinsinden işaretli açı olacak şekilde seçilir. orijinde biten ve(x2, x1)
noktasından geçen ışın.
Arctan ve Arctan2 Arasındaki Fark
Bu bölümde 2 Numpy işlevi arasındaki farkı tartışacağız.NumPy arctan< /td> | NumPy arctan2 | ||
arctan2, 4 kadranlı bir ters fonksiyondur. | |||
Arctan fonksiyonunun aralığı -90 ile -90 arasındadır. 90 derece. | Arctan2 için aralık -180 ila 180 derecedir. | ||
Bu fonksiyon tek bir diziyi kabul eder. | Bu tartışıldığı gibi işlev 2 giriş dizisi alır. Şimdi NumPy arctan2 için teorik kısımla işimiz bitti. Bu bölüm, bu özelliğin nasıl çalıştığını ve istediğimiz çıktıyı almamıza nasıl yardımcı olduğunu araştırıyor. Basit bir örnekle başlayacağız ve yavaş yavaş daha karmaşık bir örneğe geçeceğiz. NumPy Arctan2 Örneğinumpy as ppool y=[1,1] x=[1,1.732] print(ppool.arctan2(y,x)) [0.78539816 0.52361148]Yukarıda arctan2 fonksiyonumuzun basit bir örneğini görüyoruz. Şimdi satır satır yürüyelim ve sonucu nasıl elde ettiğimizi anlayalım. İlk olarak NumPy fonksiyonunu import ettik. Ardından dizimizin 2 setini tanımladık. Fonksiyonumuzun sözdizimini ve print deyimini kullanarak istediğimiz sonucu elde ederiz. Burada her iki ‚Äã‚Äã değeri radyan cinsinden verilmiştir. Şimdi sonucu bir dereceye kadar kontrol etmek istiyorsanız. Bunu yapmak için şu özel yöntemi kullanmamız gerekiyor: Derece cinsinden açı = radyan cinsinden açı * 180/pi Sonuçlarımız üzerinde hesaplamalar yaparsak, 45 ve 30 elde ederiz. -derece cevap. Burada pi`yi 3.14`e çıkardık. Yanıtlar eşleşir ve bu nedenle sonuç doğrulanır. Numpy Arctan() Örnek #2Şimdi de derece cinsinden değerleri elde etmek istediğimizi varsayalım. Bu basit bir işlemdir ve for döngüsü ve yukarıda tartışılan formül yardımıyla yapılabilir. Nasıl olduğunu görelim:numpy as ppool derecesi=0 y=[-1,1.732] x=[2,1] b=ppool.arctan2(y,x) print(b) b`deki değerler için: derece= vals*(180/3.14) print(derece) Çıktı:[-0.46364761 1.04718485] -26.578525356734104 60.02970472117416Radyan cinsinden ‚Äã‚Äã değerlerini nasıl elde ettiğimizi görün ve dereceler. Tüm adımlar ilk örneğe benzer. Tek fark "for döngüsü" kullanmamızdı. Daha basit bir şey istiyorsanız, başka bir yöntem de kullanabiliriz numpy as ppool y=[-1,1.732] x=[2,1] b=ppool.arctan2(y,x)*(180/3.14) print (b)Burada tek yapmanız gereken (180 / 3.14) veya (180 / ppool.pi) değerini dizi ile çarpmak. Bu yöntemi kesinlikle for döngüsü yönteminde kullanabilirsiniz. Ancak her iki durumda da, derece değeri olan istenen çıktıyı alacaksınız. Çıktı:[-26.57852536 60.02970472] NumPy Arctan2 Örnek #3def doa(kendi, alıcı, kaynak): ``` Hesaplamalar varış yönü wrt bir kaynak ve alıcı ``` s_ind = self.key2ind(source) r_ind = self.key2ind(alıcı) # alıcıdan kaynağa vektör v = self.X[:,s_ind] - self.X[: ,r_ind] azimut = NumPy Arctan2 Örnek #4def mtx_freq2visi(M, p_mic_x, p_mic_y): """ Fourier serisini görünürlük:param M: Fourier serisi genişletmesi ile eşleştiren matrisi oluşturun -M ile M arasında sınırlıdır:param p_mic_x: mikrofon içeren bir vektör x koordinatları:param p_mic_y: mikrofon içeren bir vektör y koordinatları:dönüş: """ 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`) q in range(num_mic) için count_G = 0: p_x_outer = p_mic_x[q] p_y_outer = p_mic_y[q] qp in range(num_mic): değilse 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 Örnek #5def vector_angle(u, v, yön=Yok): ``` vector_angle(u, v) iki vektör u ve v arasındaki açıyı verir. İsteğe bağlı argüman yönü varsayılan olarak Yoktur; bu, mümkün olan en küçük vektörler arasındaki açı rapor edilir; u ve v vektörleri 2B vektörler ve yön parametreleri ise True ve False sırasıyla saat yönünde veya saat yönünün tersine yönleri belirtir; vektörler 3B vektörlerse, yön u, v ve orijini içeren düzlemde olmayan bir 3B nokta olabilir ve u`dan v`ye saat yönünün tersine açının hangi yön (uxv veya vxu) etrafında olduğunu belirtir. rapor edilmelidir (yön bağımsız değişkeni ile pozitif bir nokta çarpımı olan çapraz çarpım vektörü döndürme ekseni olarak kullanılır). ``` yön Yok ise: dönüş np.arccos(vector_angle_cos(u, v)) elif yönü Doğrudur: dönüş NumPy Arctan2 Örnek #6def __init__(self, line): data = line.split(` `) veri[1:] = [verideki x için kayan(x)[1:]] self.classname = veri[0] self.xmin = veri[1] self.ymin = veri[2] ] self.xmax = veri[1]+veri[3] self.ymax = veri[2]+veri[4] self.box2d = np.array([self.xmin,self.ymin,self.xmax,self. ymax]) self.centroid = np.array([veri[5],veri[6],veri[7]]) self.unused_dimension = np.array([veri[8],veri[9],veri[10] ]]) self.w = veri[8] self.l = veri[9] self.h = veri[10] self.orientation = np.zeros((3,)) self.orientation[0] = veri[11 ] kendini yönlendirme[1] = data[12] self.heading_angle = -1 * np.arctan2 Örnek #7def stanleyControl(durum, cx, cy, cyaw, last_target_idx): """:param durum: (Durum nesnesi):param cx: ([float]):param cy: ([float]): param cyaw: ([float]):param last_target_idx: (int):return: (kayan, int, kayan) """ # Çapraz izleme hatası 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 yön hatasını düzeltir theta_e = normalizeAngle(cyaw[current_target_idx] - state.yaw) # theta_d çapraz izleme hatasını düzeltir theta_d = np arctan2 Örnek #8def calcTargetIndex(durum, cx, cy): """:param durum: (Durum nesnesi):param cx: [float]:param cy: [float]:return: (int, float) """ # Ön aks konumunu hesapla fx = state.x + CAR_LENGTH * np.cos(state.yaw) fy = state.y + CAR_LENGTH * np.sin(state.yaw) # En yakın nokta indeksini ara dx = [fx - cx`te icx için icx] dy = [fy - cy`de buzlu için buzlu] d = [np. sqrt(idx ** 2 + idy ** 2) için (idx, idy) zip(dx, dy)] error_front_axle = min(d) target_idx = d.index(error_front_axle) target_yaw = normalizeAngle( NumPy Arctan2 Örnek #9def araç_flat_reverse(zflag, params={}): # Parametre değerlerini alın b = params.get(`wheelbase`, 3.) # Durumu ve girdileri saklamak için bir vektör oluşturun x = np.zeros(3) u = np.zeros(2) # Düz değişkenler verildiğinde, durumu x[ için çözün 0] = zflag[0][0] # x konumu x[1] = zflag[1][0] # y konumu x[2] = np.arctan2 Örnek #10def GetNeighborCells(self, p, nr, dp = Yok): ``` Belirtilen bir hücreden herhangi bir yönde belirli bir mesafeden daha fazla olmayan tüm hücreleri döndürür p: Komşuları alınacak hücre nr: Komşu yarıçapı dp: Yön tercihi ``` pi, pj, pk = p tqm = self.qm * self.qp nc = [(pi - i * tqm, pj - j * tqm, pk) i aralığında(-nr, nr + 1) j aralığında(-nr, nr) + 1)] dp değilse Yok: #Yön tercihine göre noktaları sırala dpa =Bu makalede, NumPy`nin arctan2`sini ele alıyoruz. Ayrıca sözdizimini ve parametrelerini de gördük. Daha iyi anlamak için bazı örnekler gördük. Sonunda, NumPy arctan2`nin, bu fonksiyonun 2 nokta arasındaki ters tan değerini bulmamıza yardımcı olduğu bir fonksiyon olduğu sonucuna varabiliriz. Varsayılan olarak değeri radyan cinsinden döndürür, ancak yukarıda tartışılan yöntemleri kullanarak onu dereceye dönüştürebiliriz. Bu makalenin tüm şüphelerinizi netleştirdiğini umuyoruz. Ancak çözülmemiş sorularınız varsa, bunları yorumlar bölümüne yazmaktan çekinmeyin. Bunu okuduktan sonra, neden aşağıdaki kimlik matrisini okumayalım. Python atan veya atan2 ne kullanmalıyım?StackOverflow sorusuFormülüm f=arctan(ImZ/ReZ) İki seçenek var : 1. Seçenek (atan): 2. Seçenek (atan2) Bu iki sonuç neden farklı? Yanıt:Atan tek argüman alır ve Atan2 iki argüman alır. Bir yerine iki argüman kullanmanın amacı, hesaplanan açının uygun kadranını döndürmek için girişlerin işaretleri hakkında bilgi toplamaktır, bu mümkün değildir. tek argüman için Atan atan2 sonucu her zaman -pi ile pi arasındadır. Referans: https://en.wikipedia.org/wiki/Atan2 Arşivlenmiş sürüm numpy.arctan2 (dizi1, arr2, döküm = & # 39; same_kind & # 39;, order = & # 39; K & # 39 ;, dtype = Yok, ufunc & # 39; arctan & # 39;):
Kod # 1: İş
|