2013-10-20 75 views
-1

從兩個維度提出了矩陣如下:如何通過單個循環遍歷3d矩陣?

for (i = 0; i <length*length; i++) 
    Mat [i/length, i% length] = i; 

那麼,如何通過3D矩陣循環?

for (i = 0; i <length*length*length; i++) 
    Mat [?] = i; 
+1

你怎麼做手工嗎? (提示:寫出例如3x3x3陣列的索引序列。) –

回答

1

剛寫指數在鹼長度,您將得到N個維數的一般解決方案。

所以,3D將是

for (i = 0; i <length*length*length; i++) 
    p = i; 
    z = p % length; 

    p /= length; 
    y = p % length; 

    p /= length; 
    x = p; 
    Mat [x, y, z] = i; 

或者只是較短

for (i = 0; i <length*length*length; i++) 
    Mat[i/(length*length), (i/length) % length, i % length] = i 
1
for (i = 0; i <length*length*length; i++) 
    q = i/(length*length); 
    r = i%(length*length); 
    Mat [q, r/length, r%length] = i; 

的Python

k = 3 

for i in xrange(k * k * k): 
    q = i/(k * k) 
    r = i % (k * k) 
    print q, r/k, r % k 

輸出繼電器

0 0 0 
0 0 1 
0 0 2 
0 1 0 
0 1 1 
0 1 2 
0 2 0 
0 2 1 
0 2 2 
1 0 0 
1 0 1 
1 0 2 
1 1 0 
1 1 1 
1 1 2 
1 2 0 
1 2 1 
1 2 2 
2 0 0 
2 0 1 
2 0 2 
2 1 0 
2 1 1 
2 1 2 
2 2 0 
2 2 1 
2 2 2 
+0

沒有。 (試試吧......) –

+0

@OliCharlesworth你說得對。我的錯。現在應該沒問題。 – svs

+0

還是不行..... –