Преобразовать массив из сферических в декартовы координаты в 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);

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

0 ответов

Другие вопросы по тегам