怎么用matlab进行非线性的多元函数拟合?

怎么用matlab进行非线性的多元函数拟合?,第1张

方法一:

1、最常用的是多项式拟合,采用polyfit函数,在命令窗口输入自变量x和因变量y。

2、以二次多项式拟合为例,输入p=polyfit(x,y,2),如果想拟合更高次的多项式,更换括号内数字即可。

通过计算获得的p,是一个数组,对应了多项式的各项系数,以图中为例,拟合出的多项式为:y=0.9962x2+0.0053x-0.2833。

方法二:

1、首先,在上方工具栏选取APPS,点击curvefitting。输入自变量x和因变量y。

2、选择拟合方式,有多项式拟合polynomial,高斯拟合gaussian,幂指数拟合power等等,本次以多项式拟合为例。

3、通过数据计算,可以获得曲线参数(曲线函数中的各项系数),从而实现曲线拟合。

function fxnihe2()

format long

clc

clear

close all

x=[1970    1971    1972   1973  1974    1975    1976 1977     1978  ...

   1979 1980  1981    1982  1983   1984   1985    1986   1987    1988 ...

   1989       1990    1991      1992     1993     1994  丛仔  1995    1996 ...

   1997   1998    1999     2000     2001   2002     2003     2004    2005 ...

   2006    2007    2008  铅宽    2009      2010     2011     2012]

y=[82992, 85229 ,87177,89211, 90859 ,92420 , 93717, 94974  ,96259 , 槐郑亮...

    97542,98705 ,100072 , 101654 , 103008  ,104357 , 105851  ,107507 ,...

    109300,111026, 112704 , 114333,  115823, 117171 , 118517 ,119850 ,...

    121121, 122389, 123626 ,124761 , 125786  , 126743 ,127627 , 128453, ...

    129227 , 129988 , 130756 , 131448 , 132129  ,132802  ,133450  ,134091 ,...

    134735, 135404]

%x=x/mean(x)

%y=y/mean(y)

x0=[3.42*mean(y),100,3.73/mean(x)]

LB=[]

UB=[]

z=lsqcurvefit(@(x,t) curve(x,t),x0,x,y,LB,UB)

disp('参数如下')

zz=z

yy=curve(zz,x)

plot(x,y,'k*')

hold on

plot(x,yy,'r') 

legend('原始数据散点图','拟合后函数曲线图')

%残差

disp('    原始数值             拟合数值             两者之间差值')

disp([y',yy',yy'-y'])

disp('残差平方和')

v=sum((yy-y).^2)

function y=curve(x,t)

a=x(1)b=x(2)r=x(3)

y=a./(1+b*exp(-r*t))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12563014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存