📄 davis.m
字号:
function [Zp,Sp] = davis(data,x0,model,a,b,c,A)
% [Zp,Sp] = davis(data,x0,model,a,b,c)
%
% Punctual Kriging: Davis' method
%
% ref: Davis, J.C. (1986) Statistics and Data Analysis in Geology,
% second edition, John Wiley & Sons, New York, pp 383:386.
%
% 1-Weight equation
%
% A * X = Y
%
% where A = gamma(h) matrix -> [nxn]
% X = weight vector -> [nx1]
% Y = gamma(hp) matrix -> [nx1]
%
% 2-Solution: Gauss-Jordan elimination method
%
% X = inv(A) * Y
%
% 3-Evaluation at p
%
% Zp = X(1:length(X)-1,1)' * z
%
% where z is the colomn data vector
%
% 4- Variance at p
%
% Sp = X' * Y
%
% Input description
% -----------------
% data: The n x (p+d) data matrix. This data matrix can be imported from an
% existing ascii file. Missing values are coded 'nan' (not-a-number).
% x0: The m x d matrix of coordinates of points to estimate.
% model: Each row of this matrix describes a different elementary structure.
% The first column is a code for the model type, the d following
% columns give the ranges along the different coordinates and the
% subsequent columns give rotation angles (a maximum of three).
% The codes for the current models are:
% 1: nugget effect
% 2: exponential model
% 3: gaussian model
% 4: spherical model
% 5: linear model
% 6: quadratic
% 7: power (h^b)
% 8: logarithmic
% 9: sinc; i.e. sin(h) / h
% 10: Bessel [ Jo (h) ]
% 11: exp(-h) * cos(bh)
% 12: exp(-h) * Jo(bh)
% 13: exp(-h^2) * cos(bh)
% 14: exp(-h^2) * Jo(bh)
% 15: exp(-h^2) * (1 - br^2)
% b: b coefficient
% c: The (rp x p) coefficient matrix of the coregionalization model.
% Position (i,j) in each submatrix of size p x p give the sill of the
% elementary component for each cross-variogram (variogram) between
% variable i and variable j.
%
% Output description:
% -------------------
% For the usual application, only x0s and s are required and the other
% output matrices may be omitted.
%
% Zp: m x d kriged estimate matrix
% Sp: m x d variance matrix
% Possible models
Gam=['h==0 '; % 1. nugget
'1-exp(-h) '; % 2. exponential
'1-exp(-(h).^2) '; % 3. gaussian
'(1.5*min(h,1)/1-.5*(min(h,1)/1).^3) '; % 4. spherical
'min(1,h) '; % 5. linear
'2*min(h,1) + min(h,1).^2 '; % 6. quadratic
'h.^b '; % 7. power
'1 - log10(h) '; % 8. logarithmic
'1 - sin(h) ./ b*h '; % 9. sinc
'1 - bessel(0,h) '; %10. Bessel
'1 - exp(-h) .* cos(b*h) '; %11. cosine
'1 - exp(-h) .* bessel(0,b*h) '; %12. Bessel
'1 - exp(-h.^2) .* cos(b*h) '; %13. cosine
'1 - exp(-h.^2) .* bessel(0,b*h) '; %14. Bessel
'1 - exp(-h.^2) .* (1 - b*r.^2) '];%15.
% Parameter
n = length(data);
x = data(:,1);
y = data(:,2);
z = data(:,3);
% Evaluation of matrix A
if nargin == 6
for i = 1:n
for j = 1:n
dx = x(i) - x(j);
dy = y(i) - y(j);
r = sqrt (dx*dx + dy*dy);
h = r / a;
A(j,i) = c*eval(Gam(model,:));
end
end
A(n+1,:) = ones(1,n);
A(:,n+1) = [ones(n,1); 0];
save A2 A
end
% Evaluation of vectors Y and then X
np = length(x0)
for k = 1:np
disp(['Doing ' int2str(k) ' out of ' int2str(np)])
% interpolation position
xp = x0(k,1);
yp = x0(k,2);
for i = 1:n
% vector Y
dxp = x(i) - xp;
dyp = y(i) - yp;
rp = sqrt ( dxp*dxp + dyp*dyp);
h = rp / a;
Y(i,1) = c*eval(Gam(model,:));
end
Y(n+1,1) = 1;
% vector X
X = inv(A) * Y;
% weight vector: vector X with the last line missing
W = X(1:length(X)-1,1);
% interpolation at p
Zp(k,1) = W' * z;
% variance estimation
Sp(k,1) = X' * Y;
end
save Zp2 Zp
save Sp2 Sp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -