Arranging the cell array in the corresponding rows.
    2 views (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 Standard File Formats 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!


