完整程序如下:
clear; clc
Y=[63.1512, 63.4351, 63.9764, 64.0121, 64.1543, 64.4999, 64.5109, 64.7486, 64.9821, 65.1837; 157.6925, 158.5190, 158.4825, 159.6686, 157.8442, 160.8552, 157.6667, 160.0823, 160.5095, 157.3414];
X=Y';
x1=71.5376;
y1=153.4308;
z1=-55.8702;
l=0.422;
m=0.907;
n=-0.001;
r=9.5186;
for i=1:1:length(X(:,1))
s(i)=solve('((((X(i,2)-y1) *n-(z-z1)*m)^2+((z-z1)*l-(X(i,1)-x1)*n)^2+((X(i,1)-x1)*m-(X(i,2)-y1)*l)^2)/(l^2+m^2+n^2))-r^2','z');
eval(s(i));
end
出问题的代码是:
s(i)=solve('((((X(i,2)-y1) *n-(z-z1)*m)^2+((z-z1)*l-(X(i,1)-x1)*n)^2+((X(i,1)-x1)*m-(X(i,2)-y1)*l)^2)/(l^2+m^2+n^2))-r^2','z');
eval(s(i));
错误信息:
Error using mupadmex
Error in MuPAD command: Subscripted assignment dimension mismatch
Error in sym/subsasgn (line 1464)
C = mupadmex('symobj::subsasgn',A.s,B.s,inds{:});
Error in aaa (line 12)
s(i)=solve('((((X(i,2)-y1) *n-(z-z1)*m)^2+((z-z1)*l-(X(i,1)-x1)*n)^2+((X(i,1)-x1)*m-(X(i,2)-y1)*l)^2)/(l^2+m^2+n^2))-r^2','z');
我想实现的目标是将X中的所有值X(i,1)和X(i,2)都带入到方程中,因为方程中唯一的未知量就是z,这样就可以得到i个z的值,然后将所有的z值存入到s中,s应该是一个长度为 i 的数组,但每次都只能得到最后一个结果。请问如何修改?谢谢