功能:Shepard曲面插值

格式:
InterpolationShepard2D(x0,y0,f0,x,y,v,n)
InterpolationShepard2D(x0,y0,f0,x,y,v)
InterpolationShepard2D(x0,y0,f0,x,y)

x0:矩阵变量存储的离散数据x坐标点
y0:矩阵变量存储的离散数据y坐标点,此参数与x0变量矩阵维数一致
f0:矩阵变量存储的离散数据在(x,y)坐标下对应的函数值,,此参数与x0、y0变量矩阵维数一致
x:矩阵变量存储的需要插值点的x坐标
y:矩阵变量存储的需要插值点的y坐标,此参数与x变量矩阵维数一致
v:控制Shepard插值时的空间向量范数,默认为2
n:选取的插值基点数,默认为4

说明:
函数成功返回与x、y变量同维数的插值矩阵

原理:
本函数在多数据点就行插值时,只选取离插值点最近的n个已经数据点来进行Shepard插值,之所以没有采用文献提到的局部Shepard插值算法,因为一般地我们不那么容易去给定一个控制边界R,那么我们则转换成本文这种选取最近的n个点进行插值。因为平面一般为四边形网格,所以n默认值为4.

参考://史利民.基于散乱数据的曲面插值与逼近若干方法研究[M].2005:3-5

例子:

//这里以小木虫的{三维曲面绘制求助<http://emuch.net/bbs/viewthread.php?tid=5999724&fpage=1>}例子为例,下面的data即来自帖子,依次回车执行各条命令可看到结果


x=data(,1);//获得data第1列数据
y=data(,2);
z=data(,3);
a=max(x);
b=min(x);
x0=MeshGrid2(b,a,50);//生成x坐标网格
a=max(y);
b=min(y);
y0=MeshGrid2(b,a,50);//生成y坐标网格
y0=y0';//注意要转置一次
z0=InterpolationShepard2D(x,y,z,x0,y0);//调用本函数求解
cloud(x0,y0,z0)//可以绘制云图查看效果
