2012-11-09 73 views
1

我正在將一些Excel電子表格中的函數翻譯成python。我需要根據numpy文檔使用atan2 這是arctan2: arctan2。問題是這兩個結果都不是很接近:numpy arctan2錯誤或使用問題?

oc = 23.4384863405 
sal = 89.7814630647 
sra = np.arctan2(np.cos(np.deg2rad(sal)), 
     np.cos(np.deg2rad(oc))*np.sin(np.deg2rad(sal))) 
results: Excel = 1.566714757 Numpy = 0.00415720646 ?? 

我相信Excel的結果,因爲它是正確的。這是錯誤的。

現在或者我沒有正確使用arctan2,或者atan2在numpy中不是arctan2,或者在numpy中有錯誤,或者我在這裏完全丟失了。

我使用Python版本2.7.2和1.6.2 numpy的

任何想法,請? 由於

回答

12

Excel docs

爲ATAN2函數的語法是:

ATAN2(x座標,y座標)

numpy docs

numpy.arctan2(x1,x2 [,out])

x1/x2的單元正切選擇正確的象限。

象限(即,分支)被選擇爲使得arctan2(X1,X2)是在射線之間的弧度在原點結束 帶符號的角度和 通過點(1,0),並且所述射線經過點(x2,x1)結束於原點並且 。 (注意角色顛倒:所述 「y座標」是第一個函數參數中,「x座標」是 第二)

他們把自己的參數以相反的順序。於是:

In [31]: arctan2(cos(deg2rad(sal)), cos(deg2rad(oc))*sin(deg2rad(sal))) 
Out[31]: 0.0041572064598812417 

In [32]: arctan2(cos(deg2rad(oc))*sin(deg2rad(sal)), cos(deg2rad(sal))) 
Out[32]: 1.5666391203350154 
+0

謝謝!這解決了它。不是一件容易的事,但要解決。我會記下這一點。再一次,非常感謝! – Shejo284

+4

請注意,numpy使用的是與大多數編程語言相同的參數順序,即在C,Python,Java的標準庫中。 –