作业帮 > 综合 > 作业

matlab中lsqcurvefit拟合公式问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 05:16:06
matlab中lsqcurvefit拟合公式问题
我在用lsqcurvefit拟合一个多元函数,命令如下:
u=[60 60 60 60 6032 38 42 45 50 54 57 60 63.5 68 70 73 76 83 89 95];
v=[3 4 5 6 7 4 44 4 4 4 4 4 4 4 4 4 4 4 4 4];
x=[2 2 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 2];
y=[205 205 205205 205 345 345 345 345 345 345 345 345 345 345 345 345 345 345 345 345];
z=[0.4 0.7 0.9 11.08 0.35 0.55 0.67 0.78 1 1.18 1.3 1.5 1.65 1.9 2.05 2.3 2.55 3.2 3.85 4.5];
f=@(p,x)(((p(1)*x(1,:)).^(4)-(p(1)*x(1,:)-p(2)*x(2,:)-p(3)*x(3,:)).^(4))*x(4,:)*pi*((p(1)*x(1,:)).^(-1))/32);
[p,r]=lsqcurvefit(f,[00 0 0],[u;v;x;y],z)
但是计算报错,
主要错误没有处理变量数组的关系,你只有把u,v,x,y看成一个变量数组X就ok了.所以将代码改为如下,就行了.
u=[.]';v=[.]';x=[.]';y=[.]';z=[.]';
X=[u v x y];
fun=@(p,x)(((p(1)*x(:,1)).^(4)-(p(1)*x(:,1)-p(2)*x(:,2)-p(3)*x(:,3)).^(4)).*x(:,4)*pi.*((p(1)*x(:,1)).^(-1))/32);
%X0=rand(3,1)*(-0.02)
X0=[ -0.00273 -0.000235 -0.0178]';
[p,r]=lsqcurvefit(fun,X0,X,z);