无法在matlab中使用lsqcurvefit命令得到所需的曲线拟合。

1次查看(最近30天)
阿苏Jaglan
阿苏Jaglan 2021年8月14日
编辑: 马特·J 2021年8月14日
你好,我有一个数据集,它包含79个数据点,我正试图拟合给定的函数到这个数据集
D t ) = D g + ∑D(i)*(1-e^(-x/t(i))),其中i从1到11不等
在上面的方程中只有D(i)是未知的,我试图用lsqcurvefit得到这些,但fit很差。
有人能告诉我哪里出错了吗?
下面是我用过的代码:
负载creepmodulus_time_40.dat
xdata = (creepmodulus_time_40(: 1)“* 3600;
ydata = (1. / (creepmodulus_time_40 (:, 2))) ';
func = @ (x, xdata) (7.1 e - 3 + x (1) * (1-exp (-xdata / 1 e - 3)) + x (2) * (1-exp (-xdata / 1依照))+ x (3) * (1-exp (-xdata / 1 e 1)) + x (4) * (1-exp (-xdata / 1)) + x (5) * (1-exp (-xdata / 1 e1)) + x (6) * (1-exp (-xdata / 1 e2)) + x (7) * (1-exp (-xdata / 1 e3)) + x (8) * (1-exp (-xdata / 1 e4)) + x (9) * (1-exp (-xdata / 1 e5)) + x (10) * (1-exp (-xdata / 1 e6)) + x (11) * (1-exp (-xdata / 1 e7)));
磅= 0(1、11);
x0 =[1平台以及1 e-9 1 e-8, 1 e - 1 e-6 1 e-5 1的军医,1 e - 3, 1依照1 e 1, 1];
x = lsqcurvefit (func x0、xdata ydata,磅);
disp (x)
情节(xdata ydata,“柯”、xdata func (x, xdata),“b -”
传奇(“数据”的拟合指数
标题(“数据与拟合曲线”
错误使用负载
无法读取文件“creepmodulus_time_40.dat”。没有这样的文件或目录。
我附加了一个包含数据点的文本文件。请把它转换成DAT格式。
(上传时不支持DAT格式)万博1manbetx

答案(1)

马特·J
马特·J 2021年8月14日
编辑:马特·J 2021年8月14日
你的模型是线性的带有病态系数矩阵。
负载数据
xdata = xdata (:);
一个= [(1-exp (-xdata / 1 e - 3)), (1-exp (-xdata / 1依照)),(1-exp (-xdata / 1 e 1)), (1-exp (-xdata / 1)), (1-exp (-xdata / 1 e1)), (1-exp (-xdata / 1 e2)), (1-exp (-xdata / 1 e3)), (1-exp (-xdata / 1 e4)), (1-exp (-xdata / 1 e5)), (1-exp (-xdata / 1 e6)), (1-exp (-xdata / 1 e7)));
气孔导度(A)
ans = 5.2463 e + 19

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!