我有一个矩阵,大小(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时。
答案 0 :(得分:0)
怎么样
>> B = A(:,linear_index)'; %' re-order and permute
>> B = reshape( B, 97, 97, 32, 194, 20 );