choosing unique elements in the order that they appear in a column of a cell vector
    4 views (last 30 days)
  
       Show older comments
    
 Dear all,
I have the following cell matrix
 Out={    
'MN'    'AER_KL1'           'Bdrerv_1'  
'MN'     'AER_KL1'         'Bdrerv_1'  
'MN'     'AER_KL1'       'Bdrerv_1'  
'MN'    'AER_KL1'       'Bdrerv_1'  
'MN'     'AER_KL1'         'ksitre +2er'     
'MN'      'AER_KL1'       'ksitre +2er'     
'MN'  'AER_KL1'           'ksitre +2er'     
'MN'   'AER_KL1'          'ksitre +2er'        
'MN'  'AER_KL1'           'ksitre +2er'     
'MN'  'AER_KL1'         'ksitre +2er'     
'MN'   'AER_KL1'           'ksitre +2er'     
'MN'     'AER_KL1'          'eorftr>2'     
'MN'   'AER_KL1'           'eorftr>2'     
'MN'    '100_pr'           'se 34'  
'MN'     '100_pr'            'se 34'  
'MN'     '100_pr'            'se 34'  
'MN'    '100_pr'           'se 34'  
'MN'     '100_pr'           'se 34'      
'MN'      '100_pr'          'se 34'  
'MN'  '100_pr'           'se 34'    
'MN'   '100_pr'           'fjgitow f12'   
'MN'  '100_pr'           'fjgitow f12'     
'MN'  '100_pr'           'fjgitow f12'     
'MN'   '100_pr'           'fjgitow f12'      
'MN'     '100_pr'           'fjgitow f12'     
'MN'   '100_pr'           '344 edd'   }
I want to simplify this matrix so as to have the following specific structure
 'MN'    'AER_KL1'           'Bdrerv_1'  
'MN'  'AER_KL1'           'ksitre +2er'     
'MN'     'AER_KL1'          'eorftr>2'     
'MN'    '100_pr'           'se 34'  
'MN'  '100_pr'           'fjgitow f12'    
'MN'   '100_pr'           '344 edd'   }
As you can see I want to select the unique elements from the last column in the order that appear in “out” and construct the above simplified matrix.
IS there any quick/efficient code for doing this?
 The above matrix is an example
My original data set is of dimension 25000 by 4. So a general code for doing this is greatly appreciated
0 Comments
Accepted Answer
  Jan
      
      
 on 30 Jan 2013
        If you have a modern version of Matlab, the unique command can be controlled by teh 'first' flag to reply the first index.
4 Comments
  Sean de Wolski
      
      
 on 30 Jan 2013
				Well 'first' returns the first index, not necessarily 'stable' order; consider:
>> [uv,idx] = unique([3;2;3;1],'first')
More Answers (1)
  Thorsten
      
      
 on 30 Jan 2013
        
      Edited: Thorsten
      
      
 on 30 Jan 2013
  
      You can to it "by feet"
 unique_rows = 1;
 for i = 2:size(Out, 1)
   equals_row = 0;
   for j = 1:numel(unique_rows)
     equal_row = strcmp(Out{i, 3}, Out{unique_rows(j), 3});
     if equal_row, break, end
   end
   if ~equal_row, unique_rows(end+1) = i, end
 end
 Out_simple = Out(unique_rows, :)
0 Comments
See Also
Categories
				Find more on Other 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!