how do I count the number of identical rows in a matrix?

4 vues (au cours des 30 derniers jours)
Jeremie
Jeremie le 25 Oct 2012
Commenté : reetu hooda le 24 Mai 2018
Hello,
I'm trying understand how to apply the huffman coding function to a matrix of the type:
0 22
1 12
0 4
1 1
...etc
which is the result of run length encoding on a bi level image. I need to obtain a vector with all the possible characters, an another with the corresponding probabilities for the huffman coding function to accept.
more simply put, I'm trying to find a way to find all the identical rows in this matrix, divide it by the total number of rows, and write the result in a vector.
Thanks very much for your help, and let me know if I didn't follow the appropriate formatting rules or if this question has been covered before - a search did not give any results.
  1 commentaire
Matt J
Matt J le 25 Oct 2012
Your example doesn't have any identical rows in it. Show an example that does and what the output should be.

Connectez-vous pour commenter.

Réponses (1)

Kye Taylor
Kye Taylor le 25 Oct 2012
Let the N-by-2 matrix you're working with be denoted A.
Then, you can get a vector of size M-by-2 containing the unique rows with the command
uRows = unique(A,'rows');
Compute your empirical probability of each unique row with the commands
a = mat2cell(uRows,ones(1,size(uRows,1)),2); % convert to cell for cellfun
% function handle that takes a 1x2 row vector as input
% and returns the number of matching rows in A.
g = @(row)nnz(ismember(A,row,'rows'));
% the probability
puRows = cellfun(g,a)/size(A,1);
  1 commentaire
reetu hooda
reetu hooda le 24 Mai 2018
Thank you so much! exactly what I wanted.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by