2012-04-24 109 views
0

好吧,假設我有一個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]如何根據另一個3D矩陣中的索引對3D矩陣中的每個堆棧進行置換?

是的,我知道A(i,j,:)不是octave中的矢量。請考慮permute(A, [1 3 2])(i,:,j)的簡寫。

這應該很簡單,但無論出於何種原因,我似乎無法找到實現它的功能。

回答

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]

如果AMxNxP,當您使用A(i,j,:)表示法時,您基本上處理的是Px1矢量,你可以隨意操縱。

+0

如果是這種情況,那麼似乎除了使用嵌套循環遍歷i和j之外別無選擇。除非有更好的方法? – 2012-04-24 22:38:31