数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 6495|回复: 8

[转载]MATLAB的曲线拟合向导

[复制链接]
发表于 2003-12-22 03:17:30 | 显示全部楼层 |阅读模式
(以下转自水母)
是*lll*同学给出的一个总结。         *

*向*lll*表示感谢。                     *

*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*

*%只考虑线性拟合*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

*%原始数据 *

t = [0 .3 .8 1.1 1.6 2.3]';

y = [0.5 0.82 1.14 1.25 1.35 1.40]';

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

*%多项式拟合 *
p=polyfit(t,y,2)
%利用左除

X = [ones(size(t))  t  t.^2];

a = X\y

%regress函数

X = [ones(size(t))  t  t.^2];

*这是*lll*同学给出的一个总结。         *

*向*lll*表示感谢。                     *

*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*

*%只考虑线性拟合*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

*%原始数据 *

t = [0 .3 .8 1.1 1.6 2.3]';

y = [0.5 0.82 1.14 1.25 1.35 1.40]';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

*%多项式拟合 *
p=polyfit(t,y,2)

%利用左除

X = [ones(size(t))  t  t.^2];

a = X\y
  
%regress函数

X = [ones(size(t))  t  t.^2];

b=regress(y,X)

%lsqcurvefit函数

fun=inline('x(1)*t.^2+x(2)*t+x(3)','x','t');

x=lsqcurvefit(fun,[0,0,0],t,y)

%Curve Fitting Toolbox

fit1= fit(t,y,'poly2')

%Curve Fitting Toolbox(自定义多项式)

mymodel = fittype('a*t^2+b*t+c','independent','t');

%mymodel = fittype('a*x^2+b*x+c');

fit1= fit(t,y,mymodel,'start',[0,0,0])

  

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%指数形式的拟合

  
X = [ones(size(t))  exp(-t)  t.*exp(-t)];

a = X\y
%lsqcurvefit函数

fun=inline('x(1)+x(2)*exp(-t)+x(3).*t.*exp(-t)','x','t');

x=lsqcurvefit(fun,[0,0,0],t,y)
  

%Curve Fitting Toolbox

mymodel = fittype('a+b*exp(-t)+c*t*exp(-t)','independent','t');

%mymodel = fittype('a+b*exp(-x)+c*x*exp(-x)');

fit1= fit(t,y,mymodel,'start',[0,0,0])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%不含常数项的多项式拟合

%利用左除

X = [t  t.^2];

a = X\y

  
%regress函数

X = [t  t.^2];

b=regress(y,X)


%lsqcurvefit函数

fun=inline('x(1)+x(2)*exp(-t)+x(3).*t.*exp(-t)','x','t');

x=lsqcurvefit(fun,[0,0,0],t,y)

  
%Curve Fitting Toolbox

mymodel = fittype('a+b*exp(-t)+c*t*exp(-t)','independent','t');

%mymodel = fittype('a+b*exp(-x)+c*x*exp(-x)');

fit1= fit(t,y,mymodel,'start',[0,0,0])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%不含常数项的多项式拟合

%利用左除

X = [t  t.^2];

a = X\y

%regress函数

X = [t  t.^2];

b=regress(y,X)


发表于 2004-4-26 02:29:49 | 显示全部楼层
<>能讲一下利用matlab进行拟合的道理么?还用具体的注意事项,比如我要进行二维的拟合,我手上有x,y,z的值,但是按照interp2函数,要求x,y必须有一定的关系,请问有上面的这段代码可以完成么?</P><>急用,请速回!</P>
发表于 2004-4-30 00:33:46 | 显示全部楼层
interp是插值函数啊,你要做的是拟合,不一样的哦!用polyfit()这个函数![em01]
发表于 2004-6-3 00:40:04 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>favorapple</I>在2004-4-29 16:33:46的发言:</B>
interp是插值函数啊,你要做的是拟合,不一样的哦!用polyfit()这个函数![em01]</DIV>
<>
<>用polyfit拟合,次数不好选取</P>

[此贴子已经被作者于2004-6-2 17:47:16编辑过]

发表于 2004-6-3 17:54:47 | 显示全部楼层
<>我是一个 新手  我想问一下 如果告诉(x,y)的几个坐标 比如说是10个点 在matlab中用什么函数可以做出它的图象 怎样可以预测第11个点或者12个点的坐标(就是说输入一个x点 可以预测y)还有就是怎样考虑它的可行性 要用统计的 置信区间吗?怎么用呢?</P><>急!!!</P>[em01][em01][em01]
 楼主| 发表于 2004-6-5 22:06:42 | 显示全部楼层
<>先用plot画出来,再拟合就可以了</P>
<>help plot</P>
<>help ployfit</P>
发表于 2004-6-10 04:03:19 | 显示全部楼层
<>好像不太好办吧</P>
发表于 2004-8-21 01:53:05 | 显示全部楼层
<FONT color=#dd22dd size=4><b>谢谢啦,楼主</b></FONT>
发表于 2004-8-21 07:08:54 | 显示全部楼层
当然用曲线工具箱也不错,在commandwindows 的工作区输入cftool命令就可以。
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 21:03 , Processed in 0.058395 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表