求助matlab大神,曲线拟合问题

x=[2.755 3.035 3.184 3.212 3.236 3.293];y=[0 0.05 0.1 0.15 0.2 0.3]
能不能用matlab拟合一个x取值在[2.755 3.293]之内的单调函数尽量通过这些点?
我自己试过好久了,都得不到满意的函数。。。

对于matlab的拟合问题,可以使用cftool工具箱。

拟合结果是多种多样的。按你的要求,我试了一个,如下图:

这个拟合函数是一个幂函数,拟合结果为:

f(x) = a*x^b
a =  2.102e-015
b =       27.35

也就是:

y=2.102e-015*x^27.35

对于这个问题,对于cftool的使用,简单流程如下:

第一,在matlab命令窗口输入:

x=[2.755  3.035  3.184  3.212  3.236  3.293];
y=[0  0.05  0.1  0.15  0.2  0.3];
cftool

会弹出拟合工具箱窗口,点击Data,X Data和Y Data分别选x、y,然后点击Creat data set。

第二,点击Fitting,弹出窗口点击New fit,Type of fit就是你要拟合的函数类型。我这儿选了Power,即幂函数。然后点击Apply,工具箱窗口就会显现你的数据以及拟合好的函数曲线。

Fitting窗口的Results,会显示此次拟合的结果。

如果没有显示函数图象,点击一下Ploting,确保两条plot都选上了。

你自已可以试试其它函数类型,或者微调其它的参数。比如选择三次多项式:

但是这个不满足你单调函数的要求。多项式拟合效果会很好,但是不一定满足你单调的条件。

你可以试试别的函数,试试别的参数,挑选你觉得合适的。


具体的,细节的cftool的使用,我这儿就不赘述了。你可以在网上找到很多相关资料。

若有不解,欢迎追问。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-23

x=[2.755  3.035  3.184  3.212  3.236  3.293];

y=[0  0.05  0.1  0.15  0.2  0.3];

plot( x, y, 'b.' );

hold on;


p = polyfit( x, y, 3 );

fy = polyval( p, x );

plot( x, fy, 'r-' );

用三次多项式拟合到的多项式参数(P)为:

8.2989  -73.8404  218.8846 -216.1098


本回答被网友采纳