Matlab 如何根据另一个3D矩阵中的索引排列3D矩阵中的每个堆栈?

Matlab 如何根据另一个3D矩阵中的索引排列3D矩阵中的每个堆栈?,matlab,matrix,permutation,octave,Matlab,Matrix,Permutation,Octave,好的,假设我有一个3D矩阵a和另一个3D矩阵IND。我想做的是,对于每个堆栈A(I,j,:),根据Inds(I,j,:)中给出的索引排列该堆栈。因此,如果A(i,j,:)是[1.52.53.5]并且Inds(i,j,:)是[3.21],那么(i,j,:)就变成[3.52.51.5] 是的,我知道A(I,j,:)不是八度的向量。考虑它的速写 PimMutt(A,[1 3 2 ])(i,,,j)< /COD> < /P> 这应该很简单,但无论出于什么原因,我似乎找不到执行此操作的函数。它非常简单:

好的,假设我有一个3D矩阵a和另一个3D矩阵IND。我想做的是,对于每个堆栈
A(I,j,:)
,根据
Inds(I,j,:)
中给出的索引排列该堆栈。因此,如果
A(i,j,:)
[1.52.53.5]
并且
Inds(i,j,:)
[3.21]
,那么
(i,j,:)
就变成
[3.52.51.5]

是的,我知道A(I,j,:)不是八度的向量。考虑它的速写<代码> PimMutt(A,[1 3 2 ])(i,,,j)< /COD> < /P>
这应该很简单,但无论出于什么原因,我似乎找不到执行此操作的函数。

它非常简单:

A(i,j,:) = A(i,j,Inds(i,j,:));
在Matlab中,您可以使用索引向量重新排列任何向量:

A = [10 20 30 40 50 60];
B = [6 5 4 1 2 3];
A = A(B);
A
现在是
[60 50 40 10 20 30]


如果
A
MxNxP
,当您使用
A(i,j,:)
符号时,您实际上是在处理一个可以随意操作的
Px1
向量

如果是这种情况,那么除了使用嵌套循环来迭代i和j之外,似乎别无选择。除非有更好的办法?