0

我在使用 matlab 时遇到问题。我需要用非线性函数拟合数据集,例如:

f=alfa*(1+beta*(zeta))^(1/3)

其中alfabeta是要找到的系数。我想使用最小二乘法。如何使用命令执行此操作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
4

1 回答 1

0

你必须使用fit-functionfitType=Power2

fitobject = fit(zeta2,val,'Power2')

您还可以使用cftool手动确定系数,特别是如果您想保留(1/3). 正如woodchips 所说,也许最小二乘并不是您数据的最佳解决方案。

请注意,您必须替换您的zeta

zeta2 = 1+beta*(zeta)

您可以按如下方式确定系数:

coeffvalues(fitobject)
于 2013-09-17T14:44:37.227 回答