发布时间:2019-07-29 23:18:43
close all;
x=[-67,0,58; 67,0,58;0,-43,52;0,43,52;0,0,74];
x1=x(:,1);
x2=x(:,2);
x3=x(:,3);
y=[0.024940549 0.024940549 0.021165329 0.021165329 0.022330343];
f=@(a,x) (((x(1)-a(1)).^2+(x(2)-a(2)).^2+(x(3)-a(2)).^2).^(0.5))/((5600.^2+a(4).^2-11200.*a(4).*((x(1).*a(1)+x(2).*a(2)+x(3).*a(3).^2)/(a(1).^2+a(2).^2+a(3).^2).^(0.5).*x(1).^2+x(2).^2+x(3).^2).^(0.5)).^(0.5))+a(5);
a=[0 0 0 3800 0 ]';
[a,r,j] = nlinfit(x,y',f,a);
nlinfit()函数错误使用,这是一个比较常见使用错误。解决的方法:1、使用时,应把变量 L、T看成 x 向量组。即x=[ L T]2、自定义函数应写成func=inline('cos(beta(1))*sqrt(x(:,1)^2+beta(2)^2)-sin((x(:,2)-28.421)*15*pi/180)','beta','x');3、nlinfit()函数应写成beta=nlinfit(x,y,func,[0 0]);