插值

测量值是准确的,没有误差,一般用插值。

测量值与真实值有误差,一般用曲线拟合(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)

该命令用指定的算法找出一个二元函数 ,然后以 给出 处的值。返回数据矩阵 XiYi是向量,且必须单调, 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);

你可能感兴趣的:(算法,matlab,basic,图形,plot)