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

三维随机场

相关推荐
南宫萧幕2 小时前
基于 Luenberger 观测器的 PMSM 无速度传感器 id=0 矢量控制系统 Simulink 建模与实现(一)
算法·matlab·汽车·控制
我爱C编程2 小时前
移动边缘网络中基于双深度QLearning强化学习(DDQL)的高能效资源分配方法
matlab·强化学习·移动边缘网络·双深度qlearning·ddql·高能效资源分配
agilearchitect5 小时前
Matlab导入Excel表格教程:从基础到进阶全攻略
数据结构·其他·matlab·excel
南宫萧幕6 小时前
基于最优控制理论的 HEV 能量管理:从物理建模到 VMD-PPO 强化学习环境构建
开发语言·人工智能·matlab·simulink·控制
民乐团扒谱机19 小时前
【微实验】基于matlab的音频提取与信号滤波处理
开发语言·matlab·音视频
foundbug9991 天前
基于混合整数规划的电池容量优化 - MATLAB实现
数据结构·算法·matlab
wearegogog1231 天前
基于和差波束法的单脉冲测角MATLAB实现
人工智能·算法·matlab
feifeigo1231 天前
基于遗传算法的矩形排样MATLAB实现
开发语言·matlab
Evand J1 天前
【代码介绍】二维平面上的雷达跟踪与UKF(无迹卡尔曼滤波),高精度估计目标轨迹,输出真值、估计值、误差特性等
matlab·平面·雷达·滤波·定位·导航·跟踪
fengfuyao9851 天前
基于遗传算法的分布式电源选址定容优化(考虑环境因素)
算法·matlab·平面