Filter löschen
Filter löschen

Counting proportion of all rows taken by each unique row

1 Ansicht (letzte 30 Tage)
Ulrik Nash
Ulrik Nash am 20 Jul. 2011
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.

Akzeptierte Antwort

Jan
Jan am 20 Jul. 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 Kommentare
Sean de Wolski
Sean de Wolski am 20 Jul. 2011
Andrei, why the double computation 'n'?
Andrei Bobrov
Andrei Bobrov am 21 Jul. 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)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by