MATLAB: ошибка при использовании * размеры внутренней матрицы должны совпадать


Итак, я работаю над функцией, которая будет получать входные данные из пользовательской структуры для построения эллипсоида, но Matlab продолжает выплевывать эту ошибку. Вот часть, с которой у меня возникли проблемы:

theta = 0:(0.1):2*pi;
phi = 0:(0.1):pi;
a1 = ellipsoid_in(1).major_axis;
b1 = ellipsoid_in(1).minor_axis;
c1 = ellipsoid_in(1).transverse_axis;

x1 = a1*sin(phi)*cos(theta);
y1 = b1*sin(phi)*sin(theta);
w1 = c1*cos(phi);
plot3(x1,y1,w1)
grid on
hold on
x2 = x1;
y2 = y1;
w2 = w1;
plot3(x2,y2,z2)
xx = [x1;x2];
yy = [y1;y2];
ww = [w1;w2];

Ошибка возникает в моем первом (x1) уравнении, и я уже пробовал использовать его .* оператор на них всех с одинаковым результатом. Я предполагаю, что проблема исходит от структуры 1x2, которую я называю, но я не знаю, как это исправить. Переменные для всех структур соответствуют скалярам. Любая помощь очень ценится.

1 2

1 ответ:

theta = 0:(0.1):2*pi;
phi = 0:(0.1):pi;

С помощью указанных выше двух линий вы создали два вектора. Это разные длины (так как одна идет в pi, а другая в 2*pi, с одинаковым размером шага.

Вы хотите использовать поэлементное умножение (.*), но вам нужно, чтобы ваши векторы были одинаковой длины... в противном случае, какие элементы умножаются вместе?