Se non ti dispiace un po 'di follia indicizzazione ...
si può costruire un linear index con la appropriate shape, che applicato sulla matrice originale darà il risultato desiderato :
B = A(bsxfun(@plus, (1:L*M:L*M*N).', reshape(bsxfun(@plus, (0:L:L*M-1).', 0:L-1),1,[])));
Esempio:
>> A = randi(10,2,3,4)-1; %// example array; size 2x3x4
>> A
A(:,:,1) =
5 3 2
9 8 9
A(:,:,2) =
8 7 4
9 8 6
A(:,:,3) =
3 4 8
0 4 4
A(:,:,4) =
2 8 8
4 6 7
.515.053.691,36321 milioni
Risultato:
>> B
B =
5 3 2 9 8 9
8 7 4 9 8 6
3 4 8 0 4 4
2 8 8 4 6 7
fonte
2015-09-30 10:17:15
Grazie per l'aiuto :) –
Anche quello sarebbe stato il mio approccio preferito! –