# Arranging the cell array in the corresponding rows.

1 view (last 30 days)
pr on 8 May 2014
Edited: pr on 9 May 2014
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
Cedric Wannaz on 8 May 2014
Is there the same number of elements for each group/ID?

Andrei Bobrov on 9 May 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));
pr on 9 May 2014
@Andrei Bobrov thanks for the help. Excellent solution

the cyclist on 8 May 2014
Related to Cedric's question in his comment ... Is it a simple reshape?
c_out = reshape(c_in,2,[])
##### 2 CommentsShowHide 1 older comment
Cedric Wannaz on 8 May 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.

### Tags

No tags entered yet.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by