方法一:
1、最常用的是多项式拟合,采用polyfit函数,在命令窗口输入自变量x和因变量y。
2、以二次多项式拟合为例,输入p=polyfit(x,y,2),如果想拟合更高次的多项式,更换括号内数字即可。
通过计算获得的p,是一个数组,对应了多项式的各项系数,以图中为例,拟合出的多项式为:y=09962x2+00053x-02833。
方法二:
1、首先,在上方工具栏选取APPS,点击curvefitting。输入自变量x和因变量y。
2、选择拟合方式,有多项式拟合polynomial,高斯拟合gaussian,幂指数拟合power等等,本次以多项式拟合为例。
3、通过数据计算,可以获得曲线参数(曲线函数中的各项系数),从而实现曲线拟合。
你可以用 fit()函数拟合,得到系数a、b的值。
数学模型应选用y=aexp(-bx)
其中: a = 04467 ; b = 2151;
x=0:01:10;
%x的取值范围,可以为任意的。
y=exp(x);
%e指数函数
p=polyfit(x,y,5)
%五次多项式去拟合e指数函数,得到的p是五次多项式的系数。
fun=inline('a(1)+a(2)exp(-a(3)t)','a','t'); %建立函数
T=[1457 605 457 354 289 245 212 189 17 155 04 041 043 044 043 043];
t=[0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75];
a=lsqcurvefit(fun,[0,0,0],t,T); %拟合
hold on;plot(t,T,'bo'); %画原始数据点
t0=min(t):max(t);
T0=fun(a,t0);
plot(t0,T0,'r'); %画拟和曲线
hold off;disp(a) %显示A、B、R参数的值
myfun。m
function y = myfun(beta,x)
A=
B=
C=
m=beta(1);
n=beta(2);
y=A(B^m)(Cx^n)
窗口下执行以下命令
beta0=rand(1,2)
[beta,r,J]=nlinfit(x,y,@myfun,beta0);
对于还有年份的拟合问题,应按序列向量来处理,这样拟合的结果是有效的。即
x=[2009 2010 2011 2012 2013] 应改写为 x=1;5; %2009-2013年
具体实施代码如下
x=1;5;
y=[7408 8742 9439 11308 13965];
fun=@(a,x)[a(1)exp(a(2)x)+a(3)exp(a(4)x)];
%a=a(1),b=a(2),c=a(3),d=a(4)
x0=[1 03 05 02]
a= nlinfit(x,y,fun,x0
d=a(4),c=a(3),b=a(2),a=a(1)
运行结果
d = 0116774298952341
c = 667544631579477
b = 12220839296099
a = 00444737875381383
对比图形
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)