我使用matlab时遇到了问题。我需要使用非线性函数拟合数据集,如:
f=alfa*(1+beta*(zeta))^(1/3)
其中alfa
和beta
是要找到的系数。我想使用最小二乘法。如何使用命令lsqcurvefit
执行此操作?否则,还有其他方法可以解决我的问题吗?
非常感谢。
这里有数据集:
zeta val
0.001141174 1.914017718
0.010606563 1.36090774
0.021610291 1.906194276
0.070026172 1.87606762
0.071438139 1.877264055
0.081679327 1.859341737
0.101181292 2.518896436
0.107877774 2.772125094
0.205038829 3.032759627
0.211802706 1.483644094
0.561521724 2.424261001
0.61500615 2.559041397
0.647249191 2.949944577
0.943396226 2.84068921
1.091107474 3.453699422
1.175260761 2.604008404
1.837813003 4.00262983
2.057613169 4.565849247
2.083333333 3.779001445
3.188521323 4.430824069
4.085801839 7.766971568
4.22832981 5.711800741
4.872107186 4.949950059
9.756097561 10.78574156
答案 0 :(得分:0)
您必须使用fit
- 函数与fitType=Power2
fitobject = fit(zeta2,val,'Power2')
您还可以使用cftool
手动确定系数,特别是如果您想保留(1/3)
。正如木片所说,也许最小二乘并不是你数据的最佳解决方案。
请注意,您必须替换zeta
:
zeta2 = 1+beta*(zeta)
您可以按如下方式确定系数:
coeffvalues(fitobject)