Я работаю в 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);
но они оба создают матрицы, которые слишком малы, поэтому, очевидно, что-то идет не так.