文档介绍:用Matlab进行数据拟合
1. 多项式曲线拟合: polyfit.
y0=polyval(p,x0)
p=polyfit(x,y,m)
其中, x, y为已知数据点向量, 分别表示横,纵坐标, m为拟合多项式的次数, 结果返回m次拟合多项式系数, 从高次到低次存放在向量p中.
可求得多项式在x0处的值y0.
例1 已知观测数据点如表所示
x
y
0
-
1
分别用3次和6次多项式曲线拟合这些数据点.
x=0::1
y=[-,,,,,,,,,,]
plot(x,y,'k.','markersize',25)
axis([0 -2 16])
p3=polyfit(x,y,3)
p6=polyfit(x,y,6)
编写Matlab程序如下:
t=0::
s=polyval(p3,t)
s1=polyval(p6,t)
hold on
plot(t,s,'r-','linewidth',2)
plot(t,s,'b--','linewidth',2)
grid
x=0::1
y=[-,,,,,,,,,,]
plot(x,y,'k.','markersize',25)
axis([0 -2 16])
p3=polyfit(x,y,3)
p6=polyfit(x,y,6)
例2 用切削机床进行金属品加工时, 为了适当地调整机床, 需要测定刀具的磨损速度. 在一定的时间测量刀具的厚度, 得数据如表所示:
切削时间 t/h
0
1
2
3
4
5
6
7
8
刀具厚度 y/cm
切削时间 t/h
9
10
11
12
13
14
15
16
刀具厚度 y/cm
解: 描出散点图, 在命令窗口输入:
t=[0:1:16]
y=[ ]
plot(t,y,'*')
解: 描出散点图, 在命令窗口输入:
t=[0:1:16]
y=[ ]
plot(t,y,'*')
a =
-
hold on
plot(t, y1), hold off
a=polyfit(t,y,1)
y1=-*t+
例2 用切削机床进行金属品加工时, 为了适当地调整机床, 需要测定刀具的磨损速度. 在一定的时间测量刀具的厚度, 得数据如表所示:
切削时间 t/h
0
1
2
3
4
5
6
7
8
刀具厚度 y/cm
切削时间 t/h
9
10
11
12
13
14
15
16
刀具厚度 y/cm
拟合曲线为:
y=-+
例3 ×-应变关系测试点的数据如表所示
2. 93
3. 03
已知应力-应变关系可以用一条指数曲线来描述, 即假设
式中, 表示应力, 单位是 N/m2; 表示应变.
已知应力-应变关系可以用一条指数曲线来描述, 即假设
式中, 表示应力, 单位是 N/m2; 表示应变.
解选取指数函数作拟合时, 在拟合前需作变量代换,
化为 k1, k2 的线性函数.
于是,
令
即
在命令窗口输入:
x=[500*-6 1000*-6 1500*-