How to avoid cell2mat while reshaping cell arrays
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I have 1 x 2 cell: 55430 x 2350 and 55430 x 2200 elements
Try to avoid using cell2mat, is there any another way to reshape this 1x2 cell to get: 1 x 55430 cell: 1 x 4550 elements (4550 = 2350 + 2200);
Thank you
0 Commenti
Risposta accettata
Stephen23
il 2 Mag 2019
Modificato: Stephen23
il 2 Mag 2019
Simple way using concatenation:
C = {rand(55430,2350),rand(55430,2200)}; % fake data
D = num2cell(horzcat(C{:}),2);
But I guess you are trying to avoid some "out of memory" errors, in which case loops might help:
N = numel(C);
R = size(C{1},1);
D = cell(1,R);
for ii = 1:R
T = cell(1,N);
for jj = 1:N
T{jj} = C{jj}(ii,:);
end
D{ii} = [T{:}];
end
Giving:
>> size(D)
ans =
1 55430
>> size(D{1})
ans =
1 4550
>> size(D{end})
ans =
1 4550
Più risposte (1)
KSSV
il 2 Mag 2019
C{1} = rand(55430,2350) ;
C{2} = rand(55430,2200) ;
C1 = num2cell([C{1}(:,1) C{2}(:,1)],2) ;
C2 = num2cell([C{1}(:,2:end) C{2}(:,2:end)],2) ;
1 Commento
Stephen23
il 2 Mag 2019
wave_buoys's "Answer" moved here:
Hi, thanks for a quick answer,
this could a solution, but I was expecting a better approach via 'for' loop, so that I can apply for 1 x n cell.
Could you?
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!