2015-12-03 228 views
2

我想繪製安全因子(FS,某個區域滑坡風險的量化)的時間演變。在matlab中創建三維矩陣

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 

我現在有FS數據集對於其中m = 0.5(= FS2)的20x20點以及年內(mnew)演變爲m的文件。

如何可以立即建立一年四季其中(1)FS的空間變化被存儲(FS的這樣的值在20×20矩陣)一個3D矩陣和在m功能FS(2)的時間演變。最後,我想要一個矩陣,其中既有FS的時空演變。

層1 =在上一天的所有20×20點FS在第2天

所有20×20點1

2層= FS等

有人能幫助我嗎?

在此先感謝!

回答

2

「3D矩陣」更適合稱爲等級3陣列。要做到這一點,只需在時間循環內粘貼FS2計算即可。而不是m,請使用相應的mnew來計算FS2。然後將FS3(等級3數組)的圖層設置爲FS2

然後,層1(第1天)由FS3(:,:,1)給出,層2由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