To arrange matrix based off criteria in column
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Cside
 el 4 de Dic. de 2019
  
    
    
    
    
    Comentada: Star Strider
      
      
 el 4 de Dic. de 2019
            Hi i have a 60x2 matrix, with the first column being a number from 1 to 300 (not consecutive), and the second column with locations from 1 to 9. I have attached a picture to show how it looks like and would like to regroup into a new matrix (AB) of 9x____, the rows being the locations (1:9), and the columns being the numbers that have the respective locations i.e. in the first column, if numbers 8, 16 & 52 have a corresponding location 1 in column 2, AB row 1 will be 8,16,52 (1 in each column, total 3 columns). What functions should I use for this/any ideas how to write for this? 
Thank you! :) 

0 comentarios
Respuesta aceptada
  Star Strider
      
      
 el 4 de Dic. de 2019
        Try this: 
Col1 = randperm(300);                                       % Create Column 1
Col2 = randi(9, 1, 300);                                    % Create Column 2
M = [Col1(:) Col2(:)];                                      % Create Matrix
Gather = accumarray(M(:,2), M(:,1), [], @(x){x.'});         % Cell Array With Desired Information
AB = {(1:9).', Gather};
That should work.  You will need to keep ‘AB’ as a cell array because there are different numbers of columns in each row.  You might be able to use a structure to store this information, however I doubt that a table would work correctly.  
Experiment to get the result you want.  
2 comentarios
  Star Strider
      
      
 el 4 de Dic. de 2019
				As always, my pleasure!  
To get the individual rows of ‘AB’: 
Row1 = [AB{1}(1) AB{2}{1}]
Row2 = [AB{1}(2) AB{2}{2}]
and so for the rest.  
Más respuestas (0)
Ver también
Categorías
				Más información sobre Operators and Elementary Operations en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

