Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Count number of specific values in matrix

Asked by Corey Bullard

Corey Bullard (view profile)

on 2 May 2012

I have a large matrix, m, and am trying to count the number of a specific value (i.e. How many indexes are of the value 4?)

I tried using

val = sum(m == 4);

but I end up with val being a matrix/vector of numbers. I assume these numbers are from each column and should be added together for the total, so I tried another

num = sum(val == 4);

but then I just end up with another vector/matrix.

How can I do it?

0 Comments

Corey Bullard

Corey Bullard (view profile)

Tags

Products

No products are associated with this question.

3 Answers

Answer by Walter Roberson

Walter Roberson (view profile)

on 2 May 2012
Accepted answer
sum(m(:) == 4)

0 Comments

Walter Roberson

Walter Roberson (view profile)

Answer by Kye Taylor

Kye Taylor (view profile)

on 2 May 2012

Try this:

numberOfNonZeros = nnz(m==4);

Using nnz is more efficient than converting logicals to numeric, which is required to apply sum()

0 Comments

Kye Taylor

Kye Taylor (view profile)

Answer by Sean de Wolski

Sean de Wolski (view profile)

on 2 May 2012

This could be done easily with histc() and unique() to get the number of each value:

uv = unique(x);
n  = histc(x,uv);

Or with unique() and accumarray():

[uv,~,idx] = unique(x);
n = accumarray(idx(:),1)

0 Comments

Sean de Wolski

Sean de Wolski (view profile)

Contact us