在matlab中使用fit
函数时,它返回我在代码中指定的起始值。
所以在我给fit
的{{1}}函数参数中说,返回值为
fit(... 'start', [2.9 10000] ...)
为什么matlab没有在这里调整拟合参数?我尝试改变起点,但它仍然只返回我输入的值。我还绘制了函数(参数等于我输入的起点)与数据拟合的函数,它们是非常接近彼此。
我使用fit功能错了吗?有什么方法可以从matlab获得精确的拟合参数吗?
另外,正如旁注,但是有可能得到一些东西(例如... = 2.9 (some 95% confidence value)
... = 10000 (some 95% confidence value)
值)表明拟合的程度如何?
谢谢!
编辑: 以下是我对fit函数的了解:
myfitopt = fitoptions(' Method',' NonlinearLeastSquares',' start',[13.5 * 10 ^ 3,1.31 * 10 ^ 4]); %options
myfittype = fittype(' 4 * k Temp beta /(m *((2 * pi)^ 4 *(f ^ 2-v_0 ^ 2)^ 2 +(2 * pi f beta)^ 2))','独立',' f','问题',{& #39; k',' m',' Temp'},'系数',{' beta',' v_0'},' options',myfitopt)
myfit = fit(freq',p,myfittype,' problem',{k_B,mass,Temperature})%播放beta和v_0的起始值
这是回归:
myfittype =
R^2
myfit =
General model:
myfittype(beta,v_0,k,m,Temp,f) = 4*k*Temp*beta/(m*((2*pi)^4*(f^2-v_0^2)^2+
(2*pi*f*beta)^2))
其中beta和v_0就是我输入的起始值,误差范围非常大。为什么代码不会改变这些系数以适应数据?
谢谢!
答案 0 :(得分:1)
由于您提供的信息很少,很难给您一定的解决方案。但是,我以最简单的方式解释拟合过程。
在处理曲线/曲面拟合时,您应该考虑3个重要步骤:
<强> 1。选择一个模型
但是,您可以为该类型选择不同的内容,例如:
poly1 Y = p1*x+p2
poly2 Y = p1*x^2+p2*x+p3
poly3 Y = p1*x^3+p2*x^2+...+p4
...etc., up to poly9 Y = p1*x^9+p2*x^8+...+p10
检查所有其他详细信息here。
<强> 2。使模型适合数据
在这里,您可以使用fit
函数生成适合对象f
。
f = fit(x,y,'poly2')
结果如下:
f =
Linear model Poly2:
f(x) = p1*x^2 + p2*x + p3
Coefficients (with 95% confidence bounds):
p1 = 0.006541 (0.006124, 0.006958)
p2 = -23.51 (-25.09, -21.93)
p3 = 2.113e+04 (1.964e+04, 2.262e+04)
这显示了模型以及拟合函数为您找到的系数。
第3。现在您可以轻松地使用该模型:
f(1900)
ans =
74.5558
可以使用fit
函数修改fitoptions
函数的许多其他属性。检查fit
和fitoptions
here上的matlab文档。
startpoint
属性指定系数起始值。要使用startpoint
选项,您可以使用fitoption
,然后使用fittype
然后使用fit
,如下所示:
fo = fitoptions('Method','NonlinearLeastSquares','Lower',[0,0],'Upper', Inf,max(cdate)],'StartPoint',[1 1]);
ft = fittype('a*(x-b)^n','problem','n','options',fo);
[curve2,gof2] = fit(xdata,ydata,ft,'problem',2)
回答您的附注
您可以使用residual analysis来检查合适的质量。