Arranging the cell array in the corresponding rows.
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
I have a cell array which has the following format: action (a1,a2,a3,...) and followed by the corresponding "id-number" like(01,02,03,.....) i want to generate an output in which all the unique "id-number" belongs to one group.
if true
c_in = {'a1ev01','a1ev02','a2ev01','a2ev02','a3ev01','a3ev02'}; % and so on....
% output
c_out = {'a1ev01','a2ev01','a3ev01';...
'a1ev02','a2ev02','a3ev02';}; % or in another format of the same form
end
1 Commento
Risposta accettata
Andrei Bobrov
il 9 Mag 2014
c_in = {'a1ev01','a1ev02','a2ev01','a2ev02','a3ev01','a3ev02'};
ii = regexp(c_in,'\d*','match');
i1 = str2double(cat(1,ii{:}));
c_out = accumarray([i1(:,2),i1(:,1)],(1:numel(c_in))',[],@(x)c_in(x));
Più risposte (1)
the cyclist
il 8 Mag 2014
Related to Cedric's question in his comment ... Is it a simple reshape?
c_out = reshape(c_in,2,[])
2 Commenti
Cedric
il 8 Mag 2014
Modificato: Cedric
il 9 Mag 2014
If there is always the same number of elements per group/ID and the order follows always the same schema, you (pr) can perform a reshape based on an appropriate number of rows or columns. If the second condition falls, there is a little more work but you can still store the outcome in a rectangular cell array. If both conditions fail, you must build a cell array of cell arrays.
Vedere anche
Categorie
Scopri di più su Migrate GUIDE Apps 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!