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 ответ:
theta = 0:(0.1):2*pi; phi = 0:(0.1):pi;
С помощью указанных выше двух линий вы создали два вектора. Это разные длины (так как одна идет в
pi
, а другая в2*pi
, с одинаковым размером шага.Вы хотите использовать поэлементное умножение (
.*
), но вам нужно, чтобы ваши векторы были одинаковой длины... в противном случае, какие элементы умножаются вместе?