发布时间:2022-11-21 15:25 原文链接: 如何用matlab拟合级配曲线顺便求出中值粒径

如何用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、完善代码运行可以得到如下结果。