1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab 线性拟合polyfit_Matlab 线性拟合 非线性拟合_matlab非线性拟合函数

matlab 线性拟合polyfit_Matlab 线性拟合 非线性拟合_matlab非线性拟合函数

时间:2020-03-26 23:35:03

相关推荐

matlab 线性拟合polyfit_Matlab 线性拟合  非线性拟合_matlab非线性拟合函数

Matlab 线性拟合 & 非线性拟合

使用Matlab进行拟合是图像处理中线条变换的一个重点内容,本文将详解Matlab中的直线拟合和曲线拟合用法。

关键函数:

fittype

Fit type for curve and surface fitting

Syntax

ffun = fittype(libname)

ffun = fittype(expr)

ffun = fittype({expr1,…,exprn})

ffun = fittype(expr, Name, Value,…)

ffun= fittype({expr1,…,exprn}, Name, Value,…)

/***********************************线性拟合***********************************/

线性拟合公式:

coeff1 * term1 + coeff2 * term2 + coeff3 * term3 + ...

其中,coefficient是系数,term都是x的一次项。

线性拟合Example:

Example1: y=kx+b;

法1:

x=[1,1.5,2,2.5,3];y=[0.9,1.7,2.2,2.6,3];

p=polyfit(x,y,1);

x1=linspace(min(x),max(x));

y1=polyval(p,x1);

plot(x,y,‘*’,x1,y1);

结果:p = 1.0200 0.0400

即y=1.0200 *x+ 0.0400

法2:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];

p=fittype(‘poly1’)

f=fit(x,y,p)

plot(f,x,y);

运行结果:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];

p=fittype(‘poly1’)

f=fit(x,y,p)

plot(f,x,y);

p=

LinearmodelPoly1:

p(p1,p2,x)=p1*x+p2

f=

LinearmodelPoly1:

f(x)=p1*x+p2

Coefficients(with95%confidencebounds):

p1=1.02(0.7192,1.321)

p2=0.04(-0.5981,0.6781)

Example2:y=a*x + b*sin(x) + c

法1:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];

EXPR={‘x’,‘sin(x)’,‘1’};

p=fittype(EXPR)

f=fit(x,y,p)

plot(f,x,y);

运行结果:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];

EXPR={‘x’,‘sin(x)’,‘1’};

p=fittype(EXPR)

f=fit(x,y,p)

plot(f,x,y);

p=

Linearmodel:

p(a,b,c,x)=a*x+b*sin(x)+c

f=

Linearmodel:

f(x)=a*x+b*sin(x)+c

Coefficients(with95%confidencebounds):

a=1.249(0.9856,1.512)

b=0.6357(0.03185,1.24)

c=-0.8611(-1.773,0.05094)

法2:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];

p=fittype(‘a*x+b*sin(x)+c’,‘independent’,‘x’)

f=fit(x,y,p)

plot(f,x,y);

运行结果:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];

p=fittype(‘a*x+b*sin(x)+c’,‘independent’,‘x’)

f=fit(x,y,p)

plot(f,x,y);

p=

Generalmodel:

p(a,b,c,x)=a*x+b*sin(x)+c

Warning:Startpointnotprovided,choosingrandomstart

point.

>Infit>iCreateWarningFunction/nThrowWarningat738

Infit>iFitat320

Infitat109

f=

Generalmodel:

f(x)=a*x+b*sin(x)+c

Coefficients(with95%confidencebounds):

a=1.249(0.9856,1.512)

b=0.6357(0.03185,1.24)

c=-0.8611(-1.773,0.05094)

/***********************************非线性拟合***********************************/

Example:y=a*x^2+b*x+c

法1:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];

p=fittype(‘a*x.^2+b*x+c’,‘independent’,‘x’)

f=fit(x,y,p)

plot(f,x,y);

运行结果:

p=

Generalmodel:

p(a,b,c,x)=a*x.^2+b*x+c

Warning:Startpointnotprovided,choosingrandomstart

point.

>Infit>iCreateWarningFunction/nThrowWarningat738

Infit>iFitat320

Infitat109

f=

Generalmodel:

f(x)=a*x.^2+b*x+c

Coefficients(with95%confidencebounds):

a=-0.2571(-0.5681,0.05386)

b=2.049(0.791,3.306)

c=-0.86(-2.016,0.2964)

法2:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];

%usec=0;

c=0;

p1=fittype(@(a,b,x)a*x.^2+b*x+c)

f1=fit(x,y,p1)

%usec=1;

c=1;

p2=fittype(@(a,b,x)a*x.^2+b*x+c)

f2=fit(x,y,p2)

%predictc

p3=fittype(@(a,b,c,x)a*x.^2+b*x+c)

f3=fit(x,y,p3)

%showresults

scatter(x,y);%scatterpoint

c1=plot(f1,‘b:*’);%blue

holdon

plot(f2,‘g:+’);%green

holdon

plot(f3,‘m:*’);%purple

holdoff

喜欢 (0)or分享 (0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。