Таким образом я перевел функции MATLAB cart2sph и sph2cart на python.
import numpy as np
def cart2sph(x,y,z):
azimuth = np.arctan2(y,x)
elevation = np.arctan2(z,np.sqrt(x**2 + y**2))
r = np.sqrt(x**2 + y**2 + z**2)
return azimuth, elevation, r
def sph2cart(azimuth,elevation,r):
x = r * np.cos(elevation) * np.cos(azimuth)
y = r * np.cos(elevation) * np.sin(azimuth)
z = r * np.sin(elevation)
return x, y, z
Я не нашел в numpy какой-либо библиотеки, которая переводит изменение координат MATLAB, поэтому я пишу их для себя. Есть ли в numpy более эффективный способ с точки зрения времени выполнения для написания этих функций?
xy2 = x**2 + y**2; elev = atan2(z,sqrt(xy2)); r = sqrt(xy2 + z**2)
. Такжеcos(elevation)
необходимо вычислить только один раз. - person Bas Swinckels   schedule 07.05.2015sph2cart
может быть выполнена с той же логикой. - person rth   schedule 12.05.2015