Test different number(values or label) in matrix?

2 views (last 30 days)
hello, I want to detect different number in matrix?
for exmaple in a matrix:
0 0 0 0 0 0 0;
3 3 0 0 0 0 0;
3 3 3 0 0 0 0;
0 0 0 0 4 4 4;
0 0 5 5 0 0 0;
5 5 5 5 5 0 0;
How can I know the number of different values in this matrix, and index for any elements with same value?
Can I use function 'diff'?

Accepted Answer

Paulo Silva
Paulo Silva on 3 Mar 2011
number of different values, A is your matrix
numel(unique(A))
All code:
a=[0 0 0 0 0 0 0
3 3 0 0 0 0 0
3 3 3 0 0 0 0
0 0 0 0 4 4 4
0 0 5 5 0 0 0
5 5 5 5 5 0 0];
b=unique(a)
for i=2:numel(b)
c=find(a==b(i))';
fprintf('The value %d appears %d times, indices %s\n',b(i),numel(c),num2str(c))
end

More Answers (1)

Matt Fig
Matt Fig on 3 Mar 2011
A = [0 0 0 0 0 0 0;
3 3 0 0 0 0 0;
3 3 3 0 0 0 0;
0 0 0 0 4 4 4;
0 0 5 5 0 0 0;
5 5 5 5 5 0 0]
U = unique(A); % Has the unique elements of A.
LU = length(U); % Has the number of unique elements of A.
[L,I] = histc(A(:).',U) % Has the counts per element and locations.
  1 Comment
REN
REN on 3 Mar 2011
just realize can not accepted two answers at same time?
Thanks Matt Fig!

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!