求用MATLAB软件进行一元线性拟合

2024-05-05 22:21

1. 求用MATLAB软件进行一元线性拟合

http://wenku.baidu.com/view/58f6f78583d049649b6658e2.html

求用MATLAB软件进行一元线性拟合

2. 用MATLAB怎么实现曲线拟合?

MATLAB软件提供了基本的曲线拟合函数的命令.
1 多项式函数拟合:a=polyfit(xdata,ydata,n)
其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a为拟合多项式 的系数
多项式在x处的值y可用下面程序计算.
y=polyval(a,x)
2 一般的曲线拟合:p=curvefit(‘Fun’,p0,xdata,ydata)
其中Fun表示函数Fun(p,data)的M函数文件,p0表示函数的初值.curvefit()命令的求解问题形式是
若要求解点x处的函数值可用程序f=Fun(p,x)计算.
例如已知函数形式 ,并且已知数据点 要确定四个未知参数a,b,c,d.
使用curvefit命令,数据输入 ;初值输 ;并且建立函数 的M文件(Fun.m).若定义 ,则输出
又如引例的求解,MATLAB程序:
t=[l:16];  %数据输人
y=[ 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10.2 10.32 10.42 10.5 10.55 10.58 10.6] ;
plot(t,y,’o’) %画散点图
p=polyfit(t,y,2)  (二次多项式拟合)计算结果:p=-0.0445 1.0711 4.3252  %二次多项式的系数
由此得到某化合物的浓度y与时间t的拟合函数。

3. 用MATLAB怎么实现曲线拟合?

MATLAB软件提供了基本的曲线拟合函数的命令.
1 多项式函数拟合:a=polyfit(xdata,ydata,n)其中n表示多项式的最高阶数,xdata,
ydata为将要拟合的数据,它是用数组的方式输入.
输出参数a为拟合多项式 的系数
多项式在x处的值y可用下面程序计算.
y=polyval(a,x)
2 一般的曲线拟合:p=curvefit(‘Fun’,p0,
xdata,ydata)
其中Fun表示函数Fun(p,data)的M函数文件,
p0表示函数的初值.curvefit()命令的求解问题形式是
若要求解点x处的函数值可用程序f=Fun(p,x)计算.
例如已知函数形式 ,并且已知数据点 要确定四个未知参数a,b,c,d.
使用curvefit命令,数据输入 ;初值输 ;并且建立函数 的M文件(Fun.m).若定义 ,则输出
又如引例的求解,MATLAB程序:
t=[l:16]; %数据输人
y=[ 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10.2 10.32 10.42 10.5 10.55 10.58 10.6] ;
plot(t,y,’o’) %画散点图
p=polyfit(t,y,2) (二次多项式拟合)计算结果:p=-0.0445 1.0711 4.3252 %二次多项式的系数
由此得到某化合物的浓度y与时间t的拟合函数。

用MATLAB怎么实现曲线拟合?

4. MATLAB拟合多元非线性函数?

>> x1=[101   98.4   98.8   98.5   98.6   98.2   98.8   99.2   99.5   100.6   101.9   101.5   102.7   102.4   102.8   103.1   102.9   103.3   103.5   103.6   104.4   105.1   104.6   104.9   104.9   105.4   105.3   105.5   106.4   106.5   106.2   106.1   105.5   104.2   104.1   104.5   103.2   103.6   103.4   103   102.2   101.8
];
>> x2=[496135.31   506708.07   530626.71   540481.21   548263.51   568916.2   573102.85   576698.95   576698.95   586643.29   594604.72   610224.52   625609.29   636072.26   649947.46   656561.22   663351.37   673921.72   674051.48   687506.92   696471.5   699776.74   710339.03   725851.79   733884.83   736130.86   758130.88   757384.56   763409.22   780820.85   772923.65   780852.3   787406.2   816829.25   825493.94   851590.9   855898.89   867177.63   895600   889600   900000   925000   ];
>> x3=x1.^2;
>> x4=x2.^2;
>> y=[6.903106   7.225627   8.235698   8.568031   9.057412   10.11868   11.53129   9.041437   9.371831   10.11123   10.83773   11.08377   10.10374   10.33224   10.57647   9.668508   8.662745   7.931444   7.811012   7.725547   7.753376   8.71688   8.187911   8.159127   8.164803   8.515319   8.592566   8.616842   7.977995   7.960922   7.722894   7.343536   6.759   7.079082   6.683803   6.322855   6.596952   7.004311   6.512667   6.890974   6.786185   6.329737   ];
>> x=[ones(42,1),x1',x2',x3',x4'];
>> [b,bint,r,rint,stats]=regress(y',x)
 
> In regress at 78 
b =
         0
   -0.1380
    0.0001
   -0.0014
   -0.0000
 
 
 
e=b(1)  a=b(2)    b=b(3)   c=b(4)   d=b(5)
 
y=-0.1380*x1+0.0001*x2-0.0014*x1.^2

5. 用MATLAB怎么实现曲线拟合?

1 多项式函数拟合:a=polyfit(xdata,ydata,n)其中n表示多项式的最高阶数,xdata,
ydata为将要拟合的数据,它是用数组的方式输入.
输出参数a为拟合多项式 的系数
多项式在x处的值y可用下面程序计算.
y=polyval(a,x)
2 一般的曲线拟合:p=curvefit(‘Fun’,p0,
xdata,ydata)
其中Fun表示函数Fun(p,data)的M函数文件,
p0表示函数的初值.curvefit()命令的求解问题形式是
若要求解点x处的函数值可用程序f=Fun(p,x)计算.
例如已知函数形式 ,并且已知数据点 要确定四个未知参数a,b,c,d.
使用curvefit命令,数据输入 ;初值输 ;并且建立函数 的M文件(Fun.m).若定义 ,则输出
又如引例的求解,MATLAB程序:
t=[l:16]; %数据输人
y=[ 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10.2 10.32 10.42 10.5 10.55 10.58 10.6] ;
plot(t,y,’o’) %画散点图
p=polyfit(t,y,2) (二次多项式拟合)计算结果:p=-0.0445 1.0711 4.3252 %二次多项式的系数
由此得到某化合物的浓度y与时间t的拟合函数。

用MATLAB怎么实现曲线拟合?

6. MATLAB曲线拟合

根据散点图的趋势,数据基本符合双重指数函数,即f(x) = a*exp(b*x) + c*exp(d*x)。该函数求解过程如下:
x=[100;1000;5000;10000;30000;60000;10000;170000];
y=[6.00;5.92;4.60;3.02;0.963;0.343;0.139;0.051];
func =@(a,x) a(1)*exp(a(2)*x) + a(3)*exp(a(4)*x);
x0=[0,0,0,0]; 
a=nlinfit(x,y,func,x0);
x1=100:100:170000;
y1=func(a,x1);
plot(x,y,'*'),hold on,plot(x1,y1)
求解结果及图形:

a=0.62667,b=-9.1745e-06,c=5.8438,d=-0.00013264


7. 怎么用MATLAB拟合曲线

该拟合曲线可以用matlab的lsqcurvefit()函数命令拟合得到。其过程如下:
x=[1.0 1.4 1.8 2.2];
y=[0.931 0.473 0.297 0.22];
func=inline('1./(a(1)+a(2)*x)','a','x');
b=[0.84913  0.93399];
a=lsqcurvefit(func,b,x,y)
disp(['a=',num2str(a(1)),' b=',num2str(a(2))])
运行结果
a=-1.6854 b=2.7574

怎么用MATLAB拟合曲线

8. matlab如何做线性拟合