MATLAB软件基本的曲线拟合函数命令

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB软件提供了基本的曲线拟合函数的命令。

曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。

1.线性拟合函数:regress()

调用格式: b = regress(y,X)

[b,bint,r,rint,stats] = regress(y,X)

[b,bint,r,rint,stats] = regress(y,X,alpha)

说明:b=[ε; β],regress(y,X)返回X与y的最小二乘拟合的参数值β、ε,y=ε+βX。β是p´1的参数向量;ε是服从标准正态分布的随机干扰的n´1的向量;y为n´1的向量;X为n´p矩阵。

bint返回β的95%的置信区间。

r中为形状残差,rint中返回每一个残差的95%置信区间。Stats向量包含R2统计量、回归的F值和p值。

例:

x=[ones(10,1) (1:10)'];

y=x*[10;1]+normrnd(0,0.1,10,1);

[b,bint]=regress(y,x,0.05)

结果得回归方程为:y=9.9213+1.0143x

2.多项式曲线拟合函数:polyfit()

调用格式: p = polyfit(x,y,n)

[p,s] = polyfit(x,y,n)

说明:n:多项式的最高阶数;

x,y:将要拟合的数据,用数组的方式输入;

p:为输出参数,即拟合多项式的系数;

多项式在x处的值y可用下面程序计算:

y=polyval(p,x)

例:

x=1:20;

y=x+3*sin(x);

p=polyfit(x,y,6)

xi=linspace(1,20,100);

z=polyval(p,xi); % 多项式求值函数

plot(x,y,'o',xi,z,'k:',x,y,'b')

legend('原始数据','6阶曲线')

3.一般的曲线拟合:curvefit()

调用格式:p=curvefit(‘Fun’,p0,x,y)

说明:Fun:表示函数Fun(p,data)的M函数文件;

x,y:将要拟合的数据,用数组的方式输入;

p0:表示函数待拟合参数的初值;

4.自定义函数拟合:nlinfit()

调用格式:[beta,r,J]=nlinfit(x,y,’fun’,beta0)

说明: beta:返回函数'fun'中的待定常数;

r: 表示残差;

J: 表示雅可比矩阵。

x,y: 要拟合的数据;

fun:自定义函数;

beta0:待定常数初值;

例:化工生产中获得的氯气的级分y随生产时间x下降,假定在x≥8时,y与x之间有非线性模型:

现收集了44组数据,利用该数据通过拟合确定非线性模型中的待定常数。

x y x y x y

8 0.49 16 0.43 28 0.41

8 0.49 18 0.46 28 0.40

10 0.48 18 0.45 30 0.40

10 0.47 20 0.42 30 0.40

10 0.48 20 0.42 30 0.38

10 0.47 20 0.43 32 0.41

12 0.46 20 0.41 32 0.40

12 0.46 22 0.41 34 0.40

12 0.45 22 0.40 36 0.41

12 0.43 24 0.42 36 0.36

14 0.45 24 0.40 38 0.40

14 0.43 24 0.40 38 0.40

14 0.43 26 0.41 40 0.36

16 0.44 26 0.40 42 0.39

16 0.43 26 0.41

首先,定义非线性函数的m文件:fff6.m

function yy=model(beta0,x)

a=beta0(1);

b=beta0(2);

yy=a+(0.49-a)*exp(-b*(x-8));

拟合程序:

x=[8.00 8.00 10.00 10.00 10.00 10.00 12.00 12.00 12.00 14.00 14.00 14.00...

16.00 16.00 16.00 18.00 18.00 20.00 20.00 20.00 20.00 22.00 22.00 24.00...

24.00 24.00 26.00 26.00 26.00 28.00 28.00 30.00 30.00 30.00 32.00 32.00...

34.00 36.00 36.00 38.00 38.00 40.00 42.00]';

y=[0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43 0.45 0.43 0.43 0.44 0.43...

0.43 0.46 0.42 0.42 0.43 0.41 0.41 0.40 0.42 0.40 0.40 0.41 0.40 0.41 0.41...

0.40 0.40 0.40 0.38 0.41 0.40 0.40 0.41 0.38 0.40 0.40 0.39 0.39]';

beta0=[0.30 0.02];

betafit = nlinfit(x,y,'sta67_1m',beta0)

结果:betafit =

0.3896 0.1011

即:a=0.3896 ,b=0.1011 拟合函数为:

4.多元非线性拟合:

(1).nlinfit()

调用格式:[beta,r,J]=nlinfit(X,Y,'fun',beta0)

说明: beta:返回函数'fun'中的待定常数;

r: 表示残差;

J: 表示雅可比矩阵。

X,Y: 要拟合的多元数据矩阵;

fun:自定义函数;

beta0:待定常数初值;

例:

x1 = [1150,1000,900,850,700,625,550,475,3350,3500,5900,

5800,5700,4600,4625,4725,11650,11200,11200 ]';

x2 = [175,100,25,0,75,100,150,200,50,600,500,

相关文档
最新文档