2013-07-24 6 views
0

크기 (A) = 20x301088 인 행렬과 301088x1 인 다른 벡터 linear_index가 있습니다. A를 97x97x32x20 인 배열로 변환해야합니다. 그러나 특정 순서대로 정렬되어야합니다. 벡터 linear_index에는 97x97x32의 선형 인덱스가 특정 순서로 포함되어 있습니다.행렬을 배열로 변환

예를 들어 A (20,4)의 요소는 B (:, :, :, 20)의 linear_index (4)에 넣어야합니다. 다행히도 그것은 의미가 있습니다. A의 각 행은 자체의 97x97x32 행렬을 만들며 요소는 linear_index의 값으로 지정된 인덱스에 배치됩니다. :) 길이 (LX) : A (= 1 : (길이 (LX), linear_index 1) :

나는 한 번했을하지만 shiftdim 명령이 필요

B를 B = shiftdim (A, 1);

이 방법이 효과적이지만 shiftdim 명령은 약간 시간이 걸립니다. 특히 행렬 크기가 97x97x32x194까지 올라갈 수 있습니다.

+0

에 대해 그것이 무엇인지입니까? 매트랩, 옥타브? 적절한 태그를 사용하여 명확하게 표시해야합니다. – piokuc

+0

사과드립니다.이 웹 사이트를 처음 사용했습니다. 감사합니다. 그것은 Matlab이지만, 이미 해결책을 찾아 냈습니다. –

답변

0

어떻게

>> B = A(:,linear_index)'; %' re-order and permute 
>> B = reshape(B, 97, 97, 32, 194, 20); 
+1

감사합니다. 나는 그것을 사용하여 이것을 가지고있다. A (linear_index, :) = A (1 : 길이 (linear_index), :); B = reshape (A, [97 97 32 20]); 아마 당신이 쓴 것과 비슷한 것일 것입니다. –

+0

@RossAnthonyDiJulio 그래서'linear_index'는 리버스 맵입니다 ... nice – Shai