Use cells rather than matrices to sort a matrix into 255 separate lists

3 visualizaciones (últimos 30 días)
I am trying to write a program that will sort an nx5 matrix into 255 separate lists (and it was suggested that I use cells to do this). n is usually upwards of 600,000. The numbers in the 5th column range from 1 to 255 (all are repeated), and they identify which basket the row belongs in. I am unfamiliar with how cells work, but since their size does not need to be pre-allocated, someone said this would be a good tool to use. I would like to label the baskets from 1 to 255, basket(i), or something to that effect, but I don't know the correct syntax to do that. "flag" and "switch" were also suggested. Would it be best to loop through the entire nx5 matrix and sort the rows into baskets that way? Any help with this would be appreciated. Thank you!

Respuesta aceptada

Kye Taylor
Kye Taylor el 11 de Jul. de 2012
If I understand your question, the following may help
% create array like yours... n-by-5, last column has index of "bin" which
% will be in the set {1,2,...,maxIndex}
n = 10;
maxIndex = 5;
C = [rand(n,4),randi(maxIndex,n,1)];
% idx is a n-by-1 cell array where idx{j} contains the indices of rows
% belonging to bin j
idx = accumarray(C(:,5), 1:size(C,1),[],@(C){C});
% collect those rows from the matrix belonging to bin j into the jth cell
% of bins
bins = cellfun(@(x)C(x,:),idx,'uniformoutput',false);
  2 comentarios
Kye Taylor
Kye Taylor el 11 de Jul. de 2012
If only accumarray could take a cell array as its second input... wouldn't that be sweet.
Rebecca
Rebecca el 11 de Jul. de 2012
Thank you so much! This is exactly what I needed.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Shifting and Sorting Matrices 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!

Translated by