10/30/2006

多維陣列範例

多維陣列範例

要產生多維陣列,利用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

沒有留言: