Borrar filtros
Borrar filtros

Counting proportion of all rows taken by each unique row

1 visualización (últimos 30 días)
Hi Everyone,
Suppose I have a matrix A, and I wish to determine the number of unique rows this matrix has. Then I could form B using:
B = unique(A,'rows')
So far, so good. This yields, say, 5 unique rows out of 100.
My problem is the following. Suppose, having found B, I wish to count for each of the 5 unique rows, how many rows are identical ... and then divided by the total number of rows in A, and sort. This will in this case give a 5 x 1 matrix summing to 100%.
How might this be done?
Regards,
Ulrik.

Respuesta aceptada

Jan
Jan el 20 de Jul. de 2011
X = ceil(rand(10, 10) * 5); % Test data
[B, I, J] = unique(X, 'rows');
n = size(X, 1);
H = histc(J, 1:n) / n
  4 comentarios
Sean de Wolski
Sean de Wolski el 20 de Jul. de 2011
Andrei, why the double computation 'n'?
Andrei Bobrov
Andrei Bobrov el 21 de Jul. de 2011
Hi Sean! I think so
X = ceil (rand (10, 10) * 5);% Test date
[B, I, J] = unique (X, 'rows');
H = histc (J, 1: length (I)) / size (X, 1)

Iniciar sesión para comentar.

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 20 de Jul. de 2011
more variant
[B, I, J] = unique(X, 'rows');
out = diff(find([1; diff(sort(J)); 1]))/length(J)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by