how do I count the number of identical rows in a matrix?
1 次查看(过去 30 天)
显示 更早的评论
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
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
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 Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!