MATLAB软件基本的曲线拟合函数命令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,