如何用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、完善代碼運行可以得到如下結果。