2
假设我构造如下3D阵列MATLAB索引3D阵列
n = 3;
A = zeros(n,n,n);
A(1:n^3) = 1:n^3;
其给出
>> A
A(:,:,1) =
1 4 7
2 5 8
3 6 9
A(:,:,2) =
10 13 16
11 14 17
12 15 18
A(:,:,3) =
19 22 25
20 23 26
21 24 27
人们可以看到如何MATLAB索引从上述示例的3D阵列。假设我想访问(ⅱ= 1,JJ = 3,KK = 2)此阵列中,其可以通过
>>A(1,3,2)
ans =
16
备选地完成的元件,我可以使用基于MATLAB索引规则如下形式证明上述
A(ii + (jj-1)*n + (kk-1)*n^2)
作为一个例子,对于II = 1,JJ = 3,KK = 2,I得到
>> A(1 + (3-1)*3 + (2-1)*3^2)
ans =
16
为了说明问题,我定义以下3D meshgrid(说的指数处理的目的S的位置是不相关的):
[j1 j2 j3] = meshgrid(1:n);
如果我没看错的,常识的人都会想到
A(j1 + (j2-1)*n +(j3-1)*n^2)
给我基于上述讨论相同的矩阵,但我得到
>> A(j1 + (j2-1)*3 +(j3-1)*3^2)
ans(:,:,1) =
1 2 3
4 5 6
7 8 9
ans(:,:,2) =
10 11 12
13 14 15
16 17 18
ans(:,:,3) =
19 20 21
22 23 24
25 26 27
由此我发现,如果你想获得相同的3D阵列您真正需要使用
>> A(j2 + (j1-1)*3 +(j3-1)*3^2)
这对我来说很陌生。我在这里发布这个问题,以了解其他人对此的看法。
@kelesa相关:http://stackoverflow.com/a/22461766/2586922 –