Arranging the cell array in the corresponding rows.
1 view (last 30 days)
Show older comments
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 Comment
Accepted Answer
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));
More Answers (1)
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 Comments
Cedric
on 8 May 2014
Edited: Cedric
on 9 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.
See Also
Categories
Find more on Migrate GUIDE Apps in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!