Преобразовать массив из сферических в декартовы координаты в MATLAB - PullRequest
0 голосов
/ 11 ноября 2018

Я работаю в 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);

но они оба создают матрицы, которые слишком малы, поэтому, очевидно, что-то идет не так.

...