好吧,假设我有一个3D矩阵A和另一个3D矩阵Inds。我想要做的是,对于每个堆栈A(i,j,:)
,根据Inds(i,j,:)
中给出的索引来置换该堆栈。因此,如果A(i,j,:)
为[1.5 2.5 3.5]
且Inds(i,j,:)
为[3 2 1]
,则A (i,j,:)
将变为[3.5 2.5 1.5]
。
是的,我知道A(i,j,:)
不是Octave的矢量。考虑permute(A, [1 3 2])(i,:,j)
的简写。
这应该很简单,但无论出于何种原因,我似乎找不到这样做的功能。
答案 0 :(得分:1)
它很简单:
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
向量。