预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

克里格,或者说克里金插值Kriging。法国krige名字来的。 特点是线性,无偏,方差小,适用于空间分析。所以很适合地质学、气象学、地 理学、制图学等。 相对于其他插值方法。主要缺点:由于他要依次考虑(这也是克里格插值的一般 顺序)计算影响范围,考虑各向异性否,选择变异函数模型,计算变异函数值, 求解权重系数矩阵,拟合待估计点值,所以反映速度很慢。(当然也看你算法设 计和电脑反应速度了呵呵)。而那些趋势面法,样条函数法等。虽然较快,但是 毕竟程度和适合用范围都大受限制。 具体 对比如下: 方法外推能 力逼近程度运算能力适用范围 距离反比加权法分布均匀时 好差快分布均匀 最近邻点插值法不 高强很 快分布均匀 三角网线性插 值高差 慢分布均匀 样条函 数高 强快分布密集时候 克里金插 值高强 慢均可 克里格插值又分为:简单,普通,块,对数,指示性,泛,离析克里金插值等。 克里金插值的变异函数球形模型,指数模型,高斯模型,纯块金模型,幂函数模 型,迪维生模型等。 以下结合我的绘制等值线(等高线)的程序和高斯迭代解矩阵方程方法以及多元 线性回归方法(此两方法实现另补充)说明克里格方法的实现: 注:选择变异函数模型为球形模型,选择插值方法为普通克里金,我为了简化问 题,考虑为各向同性,变差距离为固定。 inti,j,i0,i1,j0,j1,k,l,m,n,p,h;//循环变量 double*r1Matrix;//系数矩阵 double*r0Matrix;//已知向量 double*langtaMatrix;//待求解向量 double*x0;//已知点横坐标 double*y0;//已知点纵坐标 double*densgridz;//存储每次小方格内的已知值。 doubledensgridz0;//待求值 intN1=0;//统计有多少个已知值 doubler[71],r0[71]; intN[70]; for(i=0;i<100;i++) { for(j=0;j<100;j++) { if(bdataprotected[i*100+j])continue;//原值点不需要插值 //1.遍历所有非保护网格。确定每一个待插值点的r(h) //每一个网格又从横向和纵向进行搜索,也就是说正方形相关,正方形的边 长以R,格子长度为50;中心距离为25 //首先计算起循环的起始点。 //横向 if(i-25>=0) i0=i-25; elsei0=0; if(i+25<=100) i1=i+25; elsei1=100; //纵向 if(j-25>=0) j0=j-25; elsej0=0; if(j+25<=100) j1=j+25; elsej1=100; //Hmax=int(50*2^.5)=70根据对称性,所有的r(h)除以2即为所得值。 //先待插值点的编程小方格内统计有几个已知点,如果个数小于4,则 不能拟合。 N1=0; for(l=i0;l<i1;l++) for(m=j0;m<j1;m++) { if(bdataprotected[100*l+m])N1++; } if(N1<4)continue;//不符合线性回归条件,本网格不用此方法做插 值 //赋初值 for(l=0;l<=70;l++) { r0[l]=0.0; r[l]=0.0; } //计算此插值点方格内的变异函数值 for(intl=i0;l<i1;l++) for(m=j0;m<j1;m++) if(i!=l&&j!=m)//不计待估计值本身 { //自循环统计算网格内部的互相之间的h,N和z。 for(n=i0;n<i1;n++) for(p=j0;p<j1;p++) if(l!=n&&p!=m)//不对h=0计算 { if(bdataprotected[l*100+m]&&bdataprotected[n*100+p])//保证用 样本值而非估计值来进行估计 { //计算分离距离 h=int(sqrt(l-n)*(l-n)+(m-p)*(m-p)); //计算不同分离距离的样本差的平方和 r0[h]=r0[h]+(densgrid[l*100+m]-densgrid[ n*100+p])*(densgrid[l*100+m]-densgrid[n*100+p]); //不同的分离距离的样本对数 N[h]++; } } } //不同分离距离的变异函数值 for(h=1;h<=70;h++) r[h]=r0[h]/(2*N[h])/2; //2.通过所有的r(h)拟合计算球形模型的参数。方法为多元线性回归 //参数初始化 doublex1[70],y1[70];intn1=70;doublea1[4]={0,0,0