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/06/25 06:44:59
![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](/uploads/image/z/6110290-10-0.jpg?t=MATLAB+Lsqcurvefit%E6%8B%9F%E5%90%88%E9%97%AE%E9%A2%98+function+F%3Dcocl2%28x%2Cxdata%29F+%3D+x%281%29.%2A%28log%28xdata%29-1.023.%2Axdata.%5E0.5.%2F%281%2Bxdata.%5E0.5%29%2Bx%282%29.%2Axdata%2Bx%283%29.%2Axdata.%5E1.5%2Bx%284%29.%2Axdata.%5E2%2Bx%285%29.%2Axdata.%5E2.5%2Bx%286%29.%2Axdata.%5E3%29-72.14%3Bend+xdata+%3D+%5B0%3B0.3036%3B0.6133%3B0.9418%3B1.248%3B1.561%3B2.232%3B2)
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).
数据拟合最关键的是要选择适当的拟合函数形式,拟合函数选择不当不可能得到满意结果的.