Преобразовать массив из сферических в декартовы координаты в MATLAB
Я работаю в MATLAB с формулой, которая индексирует точки на единичной сфере в сферических координатах.
[i, j] = ndgrid(1:N_theta, 1:N_phi);
theta = (i-1)*2*pi/N_theta;
phi = (j)*pi/(N_phi+1);
r = 1;
b = [theta(:).'; phi(:).'; r * ones(1,numel(theta))];
Давайте предположим, что я выбираю конкретные значения для N_theta
а также N_phi
и что каждая точка имеет вектор положения в сферических координатах, где первый компонент theta
второй компонент phi
и третий компонент r
, После запуска формулы создается массив (я назвал его b
), который берет вектор положения для каждой из N точек и размещает их все рядом друг с другом, чтобы получить матрицу 3xN.
По сути, мне просто нужно взять этот массив и преобразовать его так, чтобы он был таким же массивом, где векторы расположены рядом друг с другом, но теперь векторы положения находятся в декартовых координатах (мы можем назвать новый массив B
).
Я посмотрел вверх sph2cart
Функция в MATLAB, которая предназначена для этой цели, но я не уверен, правильно ли я ее использую, и надеюсь, что кто-то может указать на то, что я делаю неправильно. Я пробовал это, например,
B=sph2cart(b(1,:),b(2,:),b(3,:));
а также
B = sph2cart(theta,phi,r);
но они оба создают матрицы, которые слишком малы, поэтому что-то явно идет не так.