2013-07-24 163 views
0

我有一個大小爲(A)= 20x301088的矩陣和另一個爲301088x1的矢量linear_index。 我需要將A轉換爲97x97x32x20的數組。但它必須按照特定的順序,向量linear_index包含特定順序的97x97x32的線性索引。將矩陣轉換爲數組

例如,A(20,4)處的元素應放入B(:,:,:,20)的linear_index(4)中。希望這是有道理的。 A的每一行都將製作自己的97x97x32矩陣,並且元素將放置在由linear_index中的值指定的索引處。

我曾經做過它,但它需要shiftdim命令:

B(1:長度(LX),linear_index)= A(1:長度(LX),:); B = shiftdim(A,1);

這可行,但shiftdim命令需要一點時間,特別是因爲我的矩陣的大小可以達到97x97x32x194。

+0

是什麼呢? Matlab,Octave?你應該清楚地指出,用一個合適的標籤 – 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:length(linear_index),:); B =重塑(A,[97 97 32 20]); 可能類似於您所寫的內容。 –

+0

@RossAnthonyDiJulio so'linear_index'是一個反向映射...很好 – Shai