0

である行列と であるsize(A) = 20x301088別のベクトルlinear_indexがあり301088x1ます。Aである配列に変換する必要があり97x97x32x20ます。ただし、特定の順序である必要があります。ベクトルには、特定の順序でlinear_indexa の線形インデックスが含まれています97x97x32

たとえば、要素 atはofA(20,4)に配置する必要があります。うまくいけば、それは理にかなっています。の各行は独自の行列を作成し、要素は の値で指定されたインデックスに配置されます。linear_index(4)B(:,:,:,20)A97x97x32linear_index

一度やったことがありますが、shiftdimコマンドが必要です:

B(1:length(lx) , linear_index) = A(1:length(lx) , :);
B = shiftdim(A,1);

これは機能しshiftdimますが、特に行列のサイズが最大になる可能性があるため、コマンドには少し時間がかかります97x97x32x194

4

1 に答える 1

0

どうですか

>> B = A(:,linear_index)'; %' re-order  and permute
>> B = reshape( B, 97, 97, 32, 194, 20 );
于 2013-07-25T21:50:58.260 に答える