发布网友 发布时间:2022-04-29 09:32
共1个回答
热心网友 时间:2022-06-25 12:56
如何用matlab拟合级配曲线?分析了题主给出的数据,其数据能够较好的符合Richards模型,所以该系数拟合问题可以来处理。
1、p系数的初值。
由于该模型表达式为y=p1*(1-p2*exp(-p3*x))^(1/(1-p4)),所以p系数的初值应这样来确定,即p0=[1.01 -0.01 0.01 1.01]
2、自定义Richards模型函数,即
func=inline('p(1)*(1-p(2)*exp(-p(3)*x)).^(1/(1-p(4)))','p','x');
3、使用nlinfit函数,求解p系数。即
[p,R,J] = nlinfit(x,y,func,p0)
4、使用nlparci函数计算参数置信区间。即
ci=nlparci(p,R,J)
5、计算拟合值,即
y1=func(p,x)
6、计算统计量,如R-square、SSE、RMSE
7、使用plot函数,绘制原始数据与拟合数据的对比图。即
plot(x,y,'rs',x,y1,'b')
xlabel("对应占比");ylabel("颗粒直径");
8、计算y1=50时d的值。计算结果为0.045956
9、完善代码运行可以得到如下结果。