grouping array based on similar row element
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Poulomi Ganguli
      
 el 8 de En. de 2020
  
    
    
    
    
    Comentada: lim xiang
 el 16 de Jul. de 2020
            Hello,
I have a matrix A:
123 1970 1 1 12
123 1971 1 1 120
123 1972 1 12 300
240 1970 1 10 40
240 1971 2 1  45
240 1972 3 34 56
230 1970 1 2 120
230 1971 2 3 320
230 1972 1 14 360	
I wish to export 3 different matrices in a folder based on the common column element. This might be easy without a loop using an index operation. The resulting matrices 
A = 
123 1970 1 1 12
123 1971 1 1 120
123 1972 1 12 300
B = 
240 1970 1 10 40
240 1971 2 1  45
240 1972 3 34 56
C = 
230 1970 1 2 120
230 1971 2 3 320
230 1972 1 14 360
3 comentarios
  Image Analyst
      
      
 el 8 de En. de 2020
				It's pretty universal among experienced MATLAB users that that would be a bad idea.  
See the FAQ.
Now, if you want ot do it in a loop
uniqueValues = unique(A(:, 1));
for k = 1 : length(uniqueValues)
    thisValue = uniqueValues(k);
    rowsWithThisValue = A(:, 1) == thisValue;
    subArray = A(rowsWithThisValue, :)
    % Now do something with the subArray
end
then that would be okay.
Respuesta aceptada
  Guillaume
      
      
 el 8 de En. de 2020
        The easiest:
savelocation = 'C:\somewhere\somefolder';
fileformat = 'submatrices_%02d.txt';
group = findgroups(A(:, 1));
splitapply(@(subA, index) writematrix(subA, fullfile(savelocation, sprintf(fileformat, index(1)))), A, group, group); %passing group twice so we get it in the anonymous function to use as file number
Más respuestas (0)
Ver también
Categorías
				Más información sobre Matrix Indexing 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!


