Finding rows in a matrix
Show older comments
I have a matrix A = [1 2; 2 1; 1 2; 2 2; 1 1; 2 2]
I want to count how many times the row [1 2] appears in above matrix A. Here for my counting purpose [1 2] would appear 3 times as [1 2] or [2 1].
Thanks guys
Accepted Answer
More Answers (2)
Azzi Abdelmalek
on 6 Oct 2012
Edited: Azzi Abdelmalek
on 6 Oct 2012
A = randi(2,10,2)
idx=find(any(repmat([1 2],size(A,1),1)-sort(A,2),2)==0)
Image Analyst
on 6 Oct 2012
Here's a brute force approach:
A = [1 2; 2 1; 1 2; 2 2; 1 1; 2 2]
sortedA = sort(A, 2)
uniqueRows = unique(sortedA, 'rows')
counts = zeros(1, size(uniqueRows, 1)); % Preallocate.
for row = 1 : size(uniqueRows, 1)
for rowA = 1 : size(A, 1)
matches = sortedA(rowA, :) == uniqueRows(row, :);
if all(matches)
counts(row) = counts(row) + 1;
end
end
end
counts
In the command window:
A =
1 2
2 1
1 2
2 2
1 1
2 2
sortedA =
1 2
1 2
1 2
2 2
1 1
2 2
uniqueRows =
1 1
1 2
2 2
counts =
1 3 2
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!