M = randi([1 5], [5 3]); % M is the matrix sum(sum(M ==2)); % 2 is the element to be counted

However, sometimes we want to count all the elements in a matrix or a vector, what should we do? Amro has given several approaches to count the elements without detailed explanation. I think the best way to learn is to understand why we use the code. Thus in the following, explanations are given for the approaches by Amro.

##### Option 1: tabulate

t = tabulate(M); % frequency count for a vector counts1 = t(t(:,2)~=0, 2); % find out the frequency of all the elements existing in the vector

However, this approach requires MATLAB Statistics Toolbox and the input must be a vector.

TABLE = tabulate(x)creates a frequency table of data in vectorx. Information inTABLEis arranged as follows:

- 1st column — The unique values of
x- 2nd column — The number of instances of each value
- 3rd column — The percentage of each value

##### Option 2: hist/histc

counts2_1 = hist( M, numel(unique(M)) ); counts2_2 = histc( M, unique(M) ); % unique: find unique elements of vector % numel: mumber of elements in array

n = hist(Y,x) where x is a vector, returns the distribution of Y among length(x) bins with centers specified by x.

n = histc(x,edges) counts the number of values in vector x that fall between the elements in the edges vector (which must contain monotonically nondecreasing values).

Note the difference between the use of hist and histc.

Part 1: http://nw360.blogspot.com.au/2013/06/count-number-of-elements-in-vector-or.html

Part 2: http://nw360.blogspot.com.au/2013/06/count-number-of-elements-in-vector-or_20.html

Part 3: http://nw360.blogspot.com.au/2013/06/count-number-of-elements-in-vector-or_21.html

References:

1 MATLAB help file.

2 http://stackoverflow.com/questions/2880933/how-can-i-count-the-number-of-elements-of-a-given-value-in-a-matrix

Hello Friends,

ReplyDeleteI have a m x n matrix. I want to compute the probability of each element occurring in a column. I want to do it for each column.

For instance, suppose we have a 3 x 4 matrix:

A = [1 1 3 2; 2 3 0 2; 3 1 0 2];

Then, I would like to have the following matrix of probabilities: _P(A) = [ 1/3 2/3 1/3 1; 1/3 1/3 2/3 1; 1/3 2/3 2/3 1];_

Here, entries in P(A) are the probabilities of each element within the column.

For the 1st column: p(1) = p(2) = p(3) = 1/3

For the 2nd column: p(1) = 2/3, p(3) = 1/3

For the 3rd column: p(3) = 1/3, p(0) = 2/3

For the 4th column: p(2) = 3/3 = 1.

Please advise.

Hi, simply treat one column as a vector and count the frequency of each elements, the divided by the number of the element in the column.

Delete