2013-10-20 71 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

还是不行..... –