克里金插值

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

克里金插值法的公式为:

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

用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. [Python]获取win平台文件的详细信息

    import win32api def getFileProperties(fname): """ 读取给定文件的所有属性, 返回一个字典. ""&q ...

  2. Codeforces_818

    A.winners总数为(k+1)diplomas. #include<bits/stdc++.h> using namespace std; long long n,k; int mai ...

  3. 《N诺机试指南》(二)C++自带实用函数

    1.排序sort函数: 2.查找:  实例:  3. 队列:

  4. sysbench压测自装MySQL数据库

    压测准备 测试机器 2vCPUs | 4GB | s6.large.2 CentOS 7.6 64bit 建立测试库 create database test_db character set utf ...

  5. learn about sqlserver partitition and partition table --- add or remove table partitions

    demo/* add partitions */ alter database xxx add filegroup FG_=fff_201708;alter database xxx add file ...

  6. node -- express框架

    express node的一个框架 安装express cnpm install express -S 引入 const express = require("express"); ...

  7. 07_TypeScript命名空间

    命名空间:内部模块,主要用于组织代码,避免命名冲突. 关键字:namespace //俩个类命名冲突 class Dog{ name: string; constructor(name: string ...

  8. axios中get请求的params参数中带数组的处理方法

    axios中get请求的params参数中带数组时导致向后台传参失败报错:from origin 'http://localhost:8080' has been blocked by CORS po ...

  9. Properties(hashtable的子类)

    Properties: Properties是hashtable的子类(在java.util包中).该集合的特点:可以用于键值对形式的配置文件,且不允许Key重复,若有重复的,后者会覆盖前者. 也就是 ...

  10. Linux运维---磁盘存储-2. RAID

    随着单块磁盘在数据安全.性能.容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks,RAID)出现了,RAID把多块独立的磁 ...