提问人:user5618251 提问时间:12/4/2015 更新时间:12/4/2015 访问量:126
在 matlab 中创建 3D 矩阵
Create 3D matrix in matlab
问:
我想绘制安全系数(FS,对某个区域山体滑坡风险的量化)的时间演变。
计算公式如下:
effcohesion=0;
rootcohesion=0;
gammat=12.9E3;
gammaw=9810;
c=0;
deltac=0;
m=0.5;
z=2.5;
phi=16;
slope=rand(20,20)*30 % slope of a gridpoint in area
Strength = c + deltac + (gammat - gammaw.*m).*z.*(cosd(slope).^2);
Stress = gammat.*z.*(sind(slope)).*(cosd(slope));
Part = tand(phi);
FS2 = (Strength./Stress).*(Part)
现在。m 的值(= 决定 FS 的地下水位高度)全年变化,因此不是恒定的。我有一个包含降水、蒸发等数据的文件,但为了不让它太复杂,我在这里假设 m 只是一年中某一天的函数:
mnew=zeros(365,1);
for t=1:365
mnew(t)=(m+t)/150;
end
我现在有一个 20x20 点的 FS 数据集,其中 m =0.5 (=FS2) 和一个包含一年中 m 演变的文件 (= mnew)。
我现在如何创建一个 3D 矩阵,其中 (1) 存储 FS 的空间变化(因此 FS 值在 20x20 矩阵上)和 (2) FS 在 m 函数中全年的时间演变。最终,我想要一个同时具有 FS 的空间和时间演变的矩阵。
第 1 层 = 第 1 天所有 20x20 点的 FS
第 2 层 = 第 2 天所有 20x20 点的 FS
等。
有人可以帮我吗?
提前致谢!
答:
2赞
Jeff Irwin
12/4/2015
#1
“3D 矩阵”更恰当地称为秩 3 数组。为此,只需将您的计算粘贴到时间循环中即可。代替 ,使用适当的 来计算 。然后将该层(秩 3 数组)设置为 。FS2
m
mnew
FS2
FS3
FS2
然后,第 1 层(第 1 天)由 、第 2 层由 等给出。FS3(:,:,1)
FS3(:,:,2)
m0=0.5;
% Sizes of array
n1 = 20;
n2 = 20;
n3 = 365;
FS3 = zeros(n1, n2, n3);
mnew=zeros(n3,1);
for t=1:n3
mnew(t)=(m0+t)/150;
effcohesion=0;
rootcohesion=0;
gammat=12.9E3;
gammaw=9810;
c=0;
deltac=0;
m = mnew(t);
z=2.5;
phi=16;
slope=rand(n1,n2)*30; % slope of a gridpoint in area
Strength = c + deltac + (gammat - gammaw.*m).*z.*(cosd(slope).^2);
Stress = gammat.*z.*(sind(slope)).*(cosd(slope));
Part = tand(phi);
FS2 = (Strength./Stress).*(Part);
FS3(:,:,t) = FS2;
end
下一个:结合 2 个矩阵的信息来查找值
评论