将Matrix转换为数组

时间:2013-07-24 18:00:42

标签: matlab indexing reshape dimension

我有一个矩阵,大小(A)= 20x301088,另一个矢量linear_index是301088x1。 我需要将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时。

1 个答案:

答案 0 :(得分:0)

怎么样

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