多維陣列範例
多維陣列範例
要產生多維陣列,利用zeros、ones、rand、randn等函數指令亦可完成,例如:
>>W=randn(4,3,5)
W(:,:,1) =
-0.4326 -1.1465 0.3273
-1.6656 1.1909 0.1746
0.1253 1.1892 -0.1867
0.2877 -0.0376 0.7258
W(:,:,2) =
-0.5883 1.0668 0.2944
2.1832 0.0593 -1.3362
-0.1364 -0.0956 0.7143
0.1139 -0.8323 1.6236
W(:,:,3) =
-0.6918 -1.4410 0.8156
0.8580 0.5711 0.7119
1.2540 -0.3999 1.2902
-1.5937 0.6900 0.6686
W(:,:,4) =
1.1908 -1.6041 -0.8051
-1.2025 0.2573 0.5287
-0.0198 -1.0565 0.2193
-0.1567 1.4151 -0.9219
W(:,:,5) =
-2.1707 0.5077 0.3803
-0.0592 1.6924 -1.0091
-1.0106 0.5913 -0.0195
0.6145 -0.6436 -0.0482
其結果等於產生一個4x3x5的陣列,等於60個常態分配之值。這些陣列等於形成五頁。
三維陣列所代表之數值可能也有其他物理意義,例如不同長方形隔間之室溫分佈,或一與時間有關之物理量等等。
設若利用排列組合指令perms(1:4)將1、2、3、4作排列,則應有十六種排法:
>> h=perms(1:4)
h =
4 3 2 1
4 3 1 2
4 2 3 1
4 2 1 3
4 1 2 3
4 1 3 2
3 4 2 1
3 4 1 2
3 2 4 1
3 2 1 4
3 1 2 4
3 1 4 2
2 3 4 1
2 3 1 4
2 4 3 1
2 4 1 3
2 1 4 3
2 1 3 4
1 3 2 4
1 3 4 2
1 2 3 4
1 2 4 3
1 4 2 3
1 4 3 2
其後由魔術方陣產生的矩陣依上述組合依行重排,置於三維陣列M內,則M應可由下指令獲得:
>> for k=1:6, M(:,:,k)=A(:,h(k,:));end
>> M
M(:,:,1) =
13 3 2 16
8 10 11 5
12 6 7 9
1 15 14 4
M(:,:,2) =
13 3 16 2
8 10 5 11
12 6 9 7
1 15 4 14
M(:,:,3) =
13 2 3 16
8 11 10 5
12 7 6 9
1 14 15 4
M(:,:,4) =
13 2 16 3
8 11 5 10
12 7 9 6
1 14 4 15
M(:,:,5) =
13 16 2 3
8 5 11 10
12 9 7 6
1 4 14 15
M(:,:,6) =
13 16 3 2
8 5 10 11
12 9 6 7
1 4 15 14
若利用sum(M,d)這個指令進行加總,則第二參數決定其加總方向,d=1時會以行向進行,但每頁會有一個加總;d=2時則為列向加總,同理,亦應有六頁;d=3為依頁向加總,故其結果應為一4X4之矩陣,其結果如下:
>> sum(M,1) %行向加總
ans(:,:,1) =
34 34 34 34
ans(:,:,2) =
34 34 34 34
ans(:,:,3) =
34 34 34 34
ans(:,:,4) =
34 34 34 34
ans(:,:,5) =
34 34 34 34
ans(:,:,6) =
34 34 34 34
>> sum(M,2) %列向加總
ans(:,:,1) =
34
34
34
34
ans(:,:,2) =
34
34
34
34
ans(:,:,3) =
34
34
34
34
ans(:,:,4) =
34
34
34
34
ans(:,:,5) =
34
34
34
34
ans(:,:,6) =
34
34
34
34
>> sum(M,3) %頁向加總
ans =
78 42 42 42
48 52 52 52
72 44 44 44
6 66 66 66
沒有留言:
張貼留言