我试图基于相关函数模拟非平稳,单变量空间数据的2D场,以便我可以调整各种参数并观察效果。
具体来说,我试图(快速)根据本文基于等式(9)的Matérn协方差结构生成非平稳数据:
http://arxiv.org/pdf/1411.3174.pdf
其中R是Matérn或指数协方差函数,Omega_s表示每个点s的协方差矩阵。在制作了一个2 ^ 2欧米茄矩阵OMs
的n ^ 2 x n ^ 2个单元格后,它指定了模拟随机字段在给定位置的关联方式,我使用下面的函数来构建相关矩阵:
rho = zeros(n^2);
for i = 1:n^2 % Point 1
for j = 1:n^2 % Point 2
if i == j
rho(i,j) = 1; % Correlation at lag 0 = 1
else
x1 = Crd(i,1); y1 = Crd(i,2); % Crd is n^2 by 2 matrix of
x2 = Crd(j,1); y2 = Crd(j,2); % coordinates in 2D
% Lag vector
h = [x1-x2;y1-y2];
% Correlaton Function:
R = exp(-norm(h)^alpha);
Q = h'*(((OMs{x1,y1}+OMs{x2,y2})/2) \ h);
OMEGA1 = (det(OMs{x1,y1})^(0.25))*det(OMs{x2,y2})^(0.25);
OMEGA2 = det((OMs{x1,y1}+OMs{x2,y2})/2)^(-0.5);
rho(i,j) = OMEGA1*OMEGA2*R*Q^(0.5);
end
end
end
不幸的是,对于中等大小的领域 - 甚至40乘40 - 这需要花费很多时间。我需要为许多不同的参数运行它 - 有没有一些方法可以更快地完成,没有那些循环?