To arrange matrix based off criteria in column
2 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
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!