KL级数展开法随机场生成matlab代码——三维随机场

matlab 复制代码
nx = 10;
ny = 10;
nz = 10;

Lx = 1;
Ly = 1;
Lz = 1;

dx = Lx / nx;
dy = Ly / ny;
dz = Lz / nz;
covMat=zeros(nx*ny);

% Matern covariance, with parameters 
nu=1;
lambda=1;
sigma2=1;

% Measure distance between ii and jj, construct covariance matrix
for ii=1:nx*ny*nz
    for jj=1:nx*ny*nz
        pageii = floor(ii/(nx*ny));
        premi   = rem(ii,(nx*ny));
        rowii  = floor(premi/nx);
        colii  = rem(premi,nx);
        
        pagejj = floor(jj/(nx*ny));
        premj   = rem(jj,(nx*ny));
        rowjj  = floor(premj/nx);
        coljj  = rem(premj,nx);
        
        z=abs((pagejj-pageii))*dz;
        y=abs((rowjj-rowii))*dy;
        x=abs((coljj-colii))*dx;
        d=(z^2+y^2+x^2)^(1/2);
        if (d==0)
            covMat(ii,jj)=sigma2;
        else
        covMat(ii,jj)=sigma2*2^(1-nu)/gamma(nu)*(sqrt(2*nu)*d/lambda)^(nu)*besselk(nu,sqrt(2*nu)*d/lambda);
        end
    end
end

Nkl = 300;
[eigenVec,eigenVal]=eigs(covMat,Nkl);
eigenVal=diag(eigenVal);
xi = randn(Nkl,1);
K = eigenVec * (sqrt(eigenVal).*xi);

Kr = reshape(K,[nx ny nz]);
Kre = exp(Kr);

slice(Kre, [1, ny], [1, nx], [1, nz]);
xlabel('Cell centers [y vlaues]');
ylabel('Cell centers [x vlaues]');
zlabel('Cell centers [z vlaues]');
axis tight
colormap(jet)
colorbar

三维随机场

相关推荐
小喵要摸鱼3 小时前
如何单独安装 MATLAB 工具箱
matlab
机器学习之心7 小时前
路径规划 | 基于极光PLO优化算法的三维路径规划Matlab程序
算法·数学建模·matlab
可编程芯片开发2 天前
基于MPPT算法的光伏并网发电系统simulink建模与仿真
matlab·simulink·mppt·光伏并网发电系统
quaer2 天前
香农插值(sinc插值)实现
大数据·开发语言·c++·算法·matlab
第二层皮-合肥2 天前
matlab系列专栏-matlab概述
开发语言·matlab
ad转化器2 天前
Matlab中文注释乱码
matlab
他人是一面镜子,保持谦虚的态度2 天前
MATLAB画柱状图
前端·matlab·信息可视化
jk_1012 天前
MATLAB中binopdf函数用法
开发语言·算法·matlab
岁月如歌,青春不败3 天前
生态碳汇涡度相关监测与通量数据分析
matlab·数据分析·生态科学·大涡模拟·涡度通量·碳汇
可编程芯片开发3 天前
基于嵌入式无人机UAV通信系统的实时最优资源分配算法matlab仿真
matlab·无人机·opa·嵌入式无人机·uav通信·实时最优资源分配