[Matlab科学计算] 使用Kriging工具箱进行简单的插值计算

记录一下Kriging法的学习过程

1.工具箱下载并安装

下载地址http://www.omicron.dk/dace.html,打开网址如下,点击zip-archive进行下载。

将下载好的工具箱解压放到matlab安装目录下的toolbox文件下,打开matlab,在set path中将dace添加到路径中。

2.教程

1)参考工具箱中的dace文档 

2)https://xg1990.com/blog/archives/222

3.插值举例

1)dace文档中自带的例子

代码如下:

load data1
theta = [10 10]; %初始值
lob = [0.1 0.1]; %下边界
upb = [20 20];   %上边界
[dmodel, perf] = dacefit(S, Y, @regpoly0, @corrgauss, theta, lob, upb);
X = gridsamp([0 0;100 100], 40);
[YX, MSE] = predictor(X, dmodel);
X1 = reshape(X(:,1), 40, 40);% 重新组装为40*40的矩阵
X2 = reshape(X(:,2), 40, 40);
YX = reshape(YX, size(X1));
figure(1),mesh(X1, X2, YX)
hold on
plot3(S(:,1), S(:,2), Y,'.k','MarkerSize',20)%初始样本点
hold off

[emodel, perf] = dacefit(S, Y, @regpoly0, @correxp, 2);
figure(2), mesh(X1, X2, reshape(MSE, size(X1)))

[y, dy] = predictor(S(1,:), dmodel)

结果如下:

2)对函数f(x)=e^{-x}+sin(x)+cos(3x)+0.2x+1,x\in [0,6] 进行插值

代码如下:

fun = @(x) exp(-x)+sin(x)+cos(3*x)+0.2*x+1;
t = 0:0.01:6;
y = fun(t);
plot(t,y,'b')
hold on
S = [0:0.5:6]';%生成初始样本点
Y = fun(S);
theta = [10]; %初始值
lob = [0.1]; %下边界
upb = [20];   %上边界
[dmodel, perf] = dacefit(S, Y, @regpoly0, @corrgauss, theta, lob, upb);
X = gridsamp([0;6], 100);
[YX, MSE] = predictor(X, dmodel);
plot(X,YX)
plot(S, Y,'.k','MarkerSize',20)%初始样本点

结果如下:

图中黑点是初始插值样本点,蓝色曲线是理论结果,红色曲线是Kriging插值结果,从图中可以看出,只用 很少的样本点就得到比较精确的插值结果。

  • 18
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值