克里金插值

克里金插值是依据协方差函数对随机过程或随机场进行空间建模和插值的回归算法。

克里金插值法的公式为:

式中为待插入的各点的重金属污染值,为已知点的重金属污染值,为每个点的权重值。

用BLUP理论求解克里金权重:

将随机场中变量的估计表示为包含随机误差的线性系统,则BLUP可表示为选择线性系统参数使估计值和真实值方差最小:

式中为未知点,{为随机场的样本,为权重系数,通常被称为克里金权重。由方差定义可知,当估计值和真实值的数学期望相同时,两者的方差最小

使用上述BLUP条件求解的权重系数包含样本点与未知点间的协方差函数。

克里金法是一种在许多领域都很有用的地址统计格网化方法,很符合本题分析污染物的浓度分布,而且克里金插值产生的结果更自然,能够有效的避免异常值的产生,也能给出标准误差,这得益于克里金插值算法考虑了被估计点的位置与已知点位置的相互之间的关系,也考虑了已知点位置之间的关系。所以,更能客观的反应污染物的分布规律,估值的精度也就相对较高。

代码如下

%采样地形图绘制
clc,clear
data=xlsread('zz.xls','附件1','B4:D322');%读取文件
%获得数据
S=data(:,1:2);
Y=data(:,3);
%采用克里金插值法
theta = [10 10]; lob = [1e-1 1e-1]; upb = [20 20];%参数
%调用克里金插值算法工具箱
%进行拟合操作
[dmodel, perf] = dacefit(S, Y, @regpoly0, @corrspherical, theta, lob, upb)
m=100;
%插值计算
X = gridsamp([0 0;30000 20000], m);
[YX MSE] = predictor(X, dmodel);
%获得插值
X1 = reshape(X(:,1),m,m); X2 = reshape(X(:,2),m,m);
YX = reshape(YX, size(X1));
%作图
figure;
surf(X1, X2, YX)
hold on,
hold off
xlabel('x/m')
ylabel('y/m')
zlabel('海拔')
title('采样地形图')
figure;
contourf(X1,X2,YX)%做平面图
[C,h] = contour(X1,X2,YX);
clabel(C,h)
xlabel('x/m')
ylabel('y/m')
zlabel('海拔')
title('采样地形图') %污染物浓度分布
clc,clear
b={'As','Cd','Cr','Cu','Hg','Ni','Pb','Zn'};
nd=xlsread('zz.xls','附件2','B4:I322');%读取文件
S=xlsread('zz.xls','附件1','B4:C322');%读取文件
%循环读取数据
for i=1:8
Y=fix(nd(:,i));
%采用克里金插值法
theta = [10 10]; lob = [1e-1 1e-1]; upb = [20 20];%参数
%调用克里金插值算法工具箱
%进行拟合操作
[dmodel, perf] = dacefit(S, Y, @regpoly0, @corrspherical, theta, lob, upb)
m=100;
%插值计算
X = gridsamp([0 0;30000 20000], m);
[YX MSE] = predictor(X, dmodel);
%获得插值
X1 = reshape(X(:,1),m,m); X2 = reshape(X(:,2),m,m);
YX = reshape(YX, size(X1));
%作图
figure;
mesh(X1, X2, YX)
hold on,
hold off
xlabel('x/m')
ylabel('y/m')
zlabel('浓度')
title([b(i)])
figure;
contourf(X1,X2,YX)
%做平面图
[C,h] = contour(X1,X2,YX);
xlabel('x/m')
ylabel('y/m')
zlabel('浓度')
title([b(i)])
end

  需要调用工具箱文件

在我的百度云盘里有,希望对你有帮助

链接:https://pan.baidu.com/s/1O-mqKowNBJ06llEldHu90A
提取码:g4wl

克里金插值 调用matlab工具箱的更多相关文章

  1. arcgis api for js实现克里金插值渲染图--不依赖GP服务

    本篇的亮点是利用kriging.js结合arcgis api for js,实现克里金插值渲染图,截图如下: 具体实现的思路如下: 1.kriging.js开源js,可以实现针对容器canvas克里金 ...

  2. arcgis api 3.x for js 实现克里金插值渲染图不依赖 GP 服务(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  3. R语言:克里金插值

    基于空间自相关,R语言克里金插值 library(gstat) Warning message: In scan(file = file, what = what, sep = sep, quote ...

  4. openlayers4 入门开发系列之前端动态渲染克里金插值 kriging 篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  5. leaflet 实现克里金插值功能(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

  6. Cesium专栏-克里金插值(全国温度为例,附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  7. ArcGIS JS API多线程克里金插值

        最近做关于雨量插值的项目,本来使用后台的GP工具做的,但是处理时间比较长需要十几秒钟左右,所以研究怎么通过前台来计算.     参考下克里金例子,思路是生成要计算区域的100乘以100网格,然 ...

  8. PIE SDK克里金插值法

    1.算法功能简介 克里金插值法基于一般最小二乘法的随机插值技术没用方差图作为权重函数,被应用于任何点数据估计其在地表上分布的现象,被称为空间自协方差最佳插值法,是一种最优内插法也是一种最常用的空间插值 ...

  9. python调用matlab脚本

    在MATLAB和Python之间建个接口,从Python中调用MATLAB脚本或者是MATLAB的函数.内容不是很难,毕竟现成的接口已经有了,在这儿记录一下API使用的一些事项. 注:本篇使用的是MA ...

随机推荐

  1. 使用脚本+kafka自带命令行工具 统计数据写入kafka速率

    思路 每隔一段时间(比如说10秒)统计一次某topic的所有partition的最大offset值之和,这便是该topic的message总数. 然后除以间隔时间就可以粗略但方便得出 某topic的数 ...

  2. CCF_201612-1_最大波动

    http://115.28.138.223/view.page?gpid=T47 水. #include<iostream> #include<cstring> #includ ...

  3. 一个工程中cpp文件的编译顺序

    做了一个实验. 最后build失败,失败的原因是变量i被重定义了.原本按照我的思路,是不应该失败的.因为我用了条件编译,若先编译Source.cpp,则会#define __HEADER_H__并且定 ...

  4. C/C++中的排序和查找

    以下内容来自<C/C++程序设计实用案例教程> 1.排序 1.1使用qsort函数 C/C++库函数提供了快速排序函数qsort(q时quick的简写),需要引入头文件<stdlib ...

  5. javascript 动态加载javascript文件

    /* loadFile(data, callback): 动态加载js文件 data: 存放需要加载的js文件的url("url" || ["url", &qu ...

  6. ELF文件之四——使用链接脚本-2个函数-data

    main.c ; int main() { ; } int add() { ; } main.o 反汇编可以看到多了.text节的反汇编,存储的是全局变量的初始化数值 main.o对比,text段后面 ...

  7. Mysql 升级重装后连接出错 Table \'performance_schema.session_variables\' doesn\'t exist

    升级重装后  连接出错 报这个错误 Table 'performance_schema.session_variables' doesn't exist   使用这个命令即可 [root@localh ...

  8. HDU 4994 博弈。

    F - 6 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  9. centos7使用MySQL的Yum存储库安装mysql5.6.45

    注意:这个MySQL5.6.45版本有问题,修改配置文件不生效,推荐安装MySQL5.6.43 下载yum源 官网地址:http://dev.mysql.com/downloads/repo/yum/ ...

  10. vue.extend 拓展

    https://www.w3cplus.com/vue/vue-extend.html https://jspang.com/post/vue2-2.html https://blog.csdn.ne ...