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

조회 수: 2 (최근 30일)
Jeremie
Jeremie 2012년 10월 25일
댓글: reetu hooda 2018년 5월 24일
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
Matt J
Matt J 2012년 10월 25일
Your example doesn't have any identical rows in it. Show an example that does and what the output should be.

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

답변 (1개)

Kye Taylor
Kye Taylor 2012년 10월 25일
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);

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by