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

三维随机场

相关推荐
Dargon28818 小时前
Simulink的SIL软件在环测试
开发语言·matlab·simulink·mbd软件开发
机器学习之心19 小时前
MATLAB基于BP神经网络-多模态多目标优化的喷墨打印纳米银导线工艺参数优化
神经网络·matlab·工艺参数优化
Dillon Dong21 小时前
从C到Simulink:什么是MATLAB_MEX_FILE 宏,如何阻挡STM32 HAL 头文件
c语言·stm32·matlab
我爱C编程21 小时前
基于SARSA强化学习的迷宫路线规划matlab仿真
matlab·强化学习·sarsa·迷宫路线规划
机器学习之心1 天前
BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆神经网络多输入多输出预测,MATLAB代码
神经网络·matlab·cnn·bo-cnn-bilstm
Dev7z1 天前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
π同学2 天前
基于Matlab的改进的广义预测控制
matlab·改进的广义预测控制
IT猿手2 天前
三维动态避障路径规划:基于部落竞争与成员合作算法(CTCM)融合动态窗口法DWA的无人机三维动态避障方法研究,MATLAB代码
算法·matlab·动态规划·无人机·路径规划·动态路径规划
freexyn2 天前
Matlab速成笔记七十:使用多项式函数进行曲线拟合
开发语言·笔记·matlab
我找到地球的支点啦2 天前
Matlab系列(006) 一利用matlab保存txt文件和读取txt文件
开发语言·算法·matlab