concatenating elements of an array in a certain manner
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello all,
I have a matrix b, with the dimension of NxLxNm. I would like to first consider b(:,:,1) up to b(:,:,j-1) where j ranges from 1 to Nm. In each iteration of j, I would like to create a new cell c with a total dimension of 1XL, an element dimension of Nxj-1, which concatenates the elements of b(:,:,1) to b(:,:,j-1) in a way such that e.g. c{1}=[b(1,1,1), b(1,1,2), ... b(1,1,j-1); b(2,1,1), b(2,1,2),...b(2,1,j-1),....]; c{2}==[b(1,2,1), b(1,2,2), ... b(1,2,j-1); b(2,1,1), b(2,1,2),...b(2,1,j-1),....], and so forth. I would appreciate if somebody can help me please. Thanks.
0 Commenti
Risposta accettata
Più risposte (1)
Guillaume
il 28 Giu 2015
Modificato: Guillaume
il 29 Giu 2015
c = mat2cell(b(:, :, 1:j), size(b, 1), ones(1, size(b, 2), j)
Or, if you want to remove the singleton column dimension:
c = cellfun(@squeeze, mat2cell(b(:, :, j), size(b, 1), ones(1, size(b, 2), j), 'UniformOutput', false)
Finally, to create all the c in one go:
allc = arrayfun(@(j) mat2cell(b(:, :, 1:j), size(b, 1), ones(1, size(b, 2)), j), 1:size(b, 3), 'UniformOutput', false)
Note: I'm not too sure why you use j-1, since, if j starts at 1, j-1 index is not valid.
Vedere anche
Categorie
Scopri di più su Multidimensional Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!