MATLAB Lsqcurvefit拟合问题 function F=cocl2(x,xdata)F = x(1).*(log(xdata)-1.023.*xdata.^0.5./(1+xdata.^0.5)+x(2).*xdata+x(3).*xdata.^1.5+x(4).*xdata.^2+x(5).*xdata.^2.5+x(6).*xdata.^3)-72.14;end xdata = [0;0.3036;0.6133;0.9418;1.248;1.561;2.232;2
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/05 15:22:22
MATLAB Lsqcurvefit拟合问题 function F=cocl2(x,xdata)F = x(1).*(log(xdata)-1.023.*xdata.^0.5./(1+xdata.^0.5)+x(2).*xdata+x(3).*xdata.^1.5+x(4).*xdata.^2+x(5).*xdata.^2.5+x(6).*xdata.^3)-72.14;end xdata = [0;0.3036;0.6133;0.9418;1.248;1.561;2.232;2
MATLAB Lsqcurvefit拟合问题
function F=cocl2(x,xdata)
F = x(1).*(log(xdata)-1.023.*xdata.^0.5./(1+xdata.^0.5)+x(2).*xdata+x(3).*xdata.^1.5+x(4).*xdata.^2+x(5).*xdata.^2.5+x(6).*xdata.^3)-72.14;
end
xdata = [0;0.3036;0.6133;0.9418;1.248;1.561;2.232;2.920;3.176;4.128;4.901;5.954;6.778];
ydata = [72.14;72.73;73.19;73.92;74.52;75.21;76.61;78.71;79.35;81.20;83.89;85.45;87.99];
x0 = [1,2,1,1,1,1];
x = lsqcurvefit(cocl2,x0,xdata,ydata);
y1 = cocl2(x,xdata)
plot(xdata,ydata,'*',xdata,y1,'r-')
出现错误:
Error using cocl2 (line 2)
Not enough input arguments.
Error in test1 (line 6)
x = lsqcurvefit(cocl2,x0,xdata,ydata);
改好了
function F=cocl2(x,xdata)
F = x(1).*(log(xdata)-1.023.*xdata.^0.5./(1+xdata.^0.5)+x(2).*xdata+x(3).*xdata.^1.5+x(4).*xdata.^2+x(5).*xdata.^2.5+x(6).*xdata.^3)-72.14;
end
xdata = [0.0001;0.3036;0.6133;0.9418;1.248;1.561;2.232;2.920;3.176;4.128;4.901;5.954;6.778];
ydata = [72.14;72.73;73.19;73.92;74.52;75.21;76.61;78.71;79.35;81.20;83.89;85.45;87.99];
x0 = [1;2;1;1;1;1];
x = lsqcurvefit(@cocl2,x0,xdata,ydata);
y1 = cocl2(x,xdata)
plot(xdata,ydata,'*',xdata,y1,'r-')
运行正确 但是拟合的不好
MATLAB Lsqcurvefit拟合问题 function F=cocl2(x,xdata)F = x(1).*(log(xdata)-1.023.*xdata.^0.5./(1+xdata.^0.5)+x(2).*xdata+x(3).*xdata.^1.5+x(4).*xdata.^2+x(5).*xdata.^2.5+x(6).*xdata.^3)-72.14;end xdata = [0;0.3036;0.6133;0.9418;1.248;1.561;2.232;2
把F表达式中最后的(-72.14)改成(+72.14).
数据拟合最关键的是要选择适当的拟合函数形式,拟合函数选择不当不可能得到满意结果的.