q10 = get(handles.edit2,'String');
q11 = str2num(q10);
x10 = get(handles.edit6,'String');
x11 = str2num(x10);
y10 = get(handles.edit7,'String');
y11 = str2num(y10);
z10 = get(handles.edit8,'String');
z11 = str2num(z10);%获取数据
c11=[q11;x11;y11;z11]
p = get(handles.edit9,'String');
k=9*10^9;
x=-3:0.1:3;
y=-3:0.1:3;
z=-3:0.1:3;
[X,Y,Z]=meshgrid(x,y,z);
U=zeros(600,600,600);
re=str2num(p);
for j=1:re
U=U+k*c11(1,j)./sqrt((X-c11(2,j)).^2+(Y-c11(3,j)).^2+(Z-c11(4,j)).^2);%电势计算
end
[Ex,Ey,Ez]=gradient(-U,0.1,0.1,0.1);
检查一下代码,可以输出一下矩阵的维度。
现在的错误是维度不匹配,运算的时候报错的,例如上述语句中,如果 c11 是一个 3×N 的矩阵,而 X、Y 和 Z 是 600×600 的矩阵,则会出现维度不匹配的问题。
注意,在 Matlab 中,不能对一个矩阵使用点运算符(.),例如 A.*B 是合法的,而 A.+B 是不合法的。