0

好的,假设我有一个 3D 矩阵 A 和另一个 3D 矩阵 Inds。我想做的是,对于每个 stack 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)

这应该很简单,但无论出于何种原因,我似乎都找不到执行此操作的功能。

4

1 回答 1

1

它的matlab非常简单:

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]

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

于 2012-04-24T22:18:03.587 回答