2012-04-24 4 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] 인 경우, (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를 반복하는 것 외에는 선택의 여지가없는 것처럼 보입니다. 더 좋은 방법이 없다면? –