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.

 채택된 답변

Guillaume
Guillaume 2014년 10월 23일
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

추가 답변 (2개)

Roger Stafford
Roger Stafford 2014년 10월 24일
편집: Roger Stafford 2014년 10월 24일
C = sum(bsxfun(@eq,A(:,1),A),2)-1; % <-- Counts (not counting column 1)

댓글 수: 1

Guillaume
Guillaume 2014년 10월 24일
편집: Guillaume 2014년 10월 24일
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.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

질문:

2014년 10월 23일

편집:

2014년 10월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by