测量值是准确的,没有误差,一般用插值。
测量值与真实值有误差,一般用曲线拟合(cftool or basic fitting)。
1、一维插值:
已知离散点上的数据集 ,即已知在点集X= 上的函数值Y= ,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。
MATLAB命令:yi=interp1(X, Y, xi, method)
该命令用指定的算法找出一个一元函数 ,然后以 给出 处的值。xi可以是一个标量,也可以是一个向量,是向量时,必须单调,method可以下列方法之一:
‘nearest’:最近邻点插值,直接完成计算;
‘spline’:三次样条函数插值;
‘linear’:线性插值(缺省方式),直接完成计算;
‘cubic’:三次函数插值;
对于[min{xi},max{xi}]外的值,MATLAB使用外推的方法计算数值。
x=1:6;
y=[16 18 21 17 15 12];
u=a:b:c;
v=interp1(X, Y, u, 'linear')
plot(x,y,'o',u,v,'-')
具体函数调用
%分段线性插值
原函数连续,一阶导数跳变
plot(x,y,'o',x,y,'-');
%分段三次爱米特插值多项式
原函数光滑,一阶导数连续,二阶导数在节点跳变
figure
v=pchip(x,y,u);
plot(x,y,'o',u,v,'-');
%三次样条
原函数光滑,一阶导数光滑,二阶导数连续
figure
v=spline(x,y,u);
plot(x,y,'o',u,v,'-');
2、二维插值
已知离散点上的数据集 ,即已知在点集 上的函数值 ,构造一个解析函数(其图形为一曲面)通过这些点,并能够求出这些已知点以外的点的函数值,这一过程称为二维插值。
MATLAB函数:Zi=interp2(X,Y,Z,Xi,Yi,method)
该命令用指定的算法找出一个二元函数 ,然后以 给出 处的值。返回数据矩阵 ,Xi,Yi是向量,且必须单调, 和meshgrid(Xi,Yi)是同类型的。method可以下列方法之一:
‘nearest’:最近邻点插值,直接完成计算;
‘spline’:三次样条函数插值;
‘linear’:线性插值(缺省方式),直接完成计算;
‘cubic’:三次函数插值;
x=1:6;
y=1:4;
t=[12,10,11,11,13,15
16,22,28,35,27,20
18,21,26,32,28,25
20,25,30,33,32,20];
subplot(1,2,1)
mesh(x,y,t) %绘原始数据图
value=interp2(x,y,t,x0,y0);%求点(x0,y0)处的值
x1=1:0.1:6;
y1=1:0.1:4;
[x2,y2]=meshgrid(x1,y1);
t1=interp2(x,y,t,x2,y2,'cubic');
subplot(1,2,2)
mesh(x1,y1,t1);