How to compare the first column of the rows to whole matrix?

I am trying to compare the first columns of rows to whole matrix, and try to find how many times each value occur in the matrix. For example, let
A = [2 4 6 1;
3 7 18 24;
4 2 6 0;
5 8 12 17;
6 2 4 0;
7 3 18 24];
I want to find how many times the row values [2 3 4 5 6 7] occur in the matrix. I can easily find it using for loop, but I don't want any loop. I am also not good at using arrayfun. Can somebody help me?
Thanks.

 Akzeptierte Antwort

Guillaume
Guillaume am 23 Okt. 2014
From the example, I assume that you want to find the occurrence of the numbers anywhere in the matrix, not just in the same row.
Just use histc or in 2014b, the new histcounts. Use sort or better unique to create your histogram bins:
bins = unique(A(:, 1)); %get unique values of 1st column, sort works if you're sure they're all different
dist = histcounts(A(:, 2:end), bins); get histogram of columns 2 to end

Weitere Antworten (2)

Roger Stafford
Roger Stafford am 24 Okt. 2014
Bearbeitet: Roger Stafford am 24 Okt. 2014
C = sum(bsxfun(@eq,A(:,1),A),2)-1; % <-- Counts (not counting column 1)

1 Kommentar

Guillaume
Guillaume am 24 Okt. 2014
Bearbeitet: Guillaume am 24 Okt. 2014
That only counts the occurrence of the number in the same row. I don't think that's what the OP intended, as in the example given, it's always 0.

Melden Sie sich an, um zu kommentieren.

Gefragt:

am 23 Okt. 2014

Bearbeitet:

am 24 Okt. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by