How to find set of 3 in a 122x4 matrix?
    조회 수: 8 (최근 30일)
  
       이전 댓글 표시
    
I have a matrix that is 122x4. These have index numbers 1-36 with two only rows containing three points that are common between them. How can I find these pairs?
ex
A=[ 1 2 13 15;
    1 2 15 35;
    1 2 17 22;
    1 2 22 36...]
(there is not a pattern throughout the matrix like there are in the first couple rows) I want some thing that can identify the pair of combos
combos = [1 2;
          3 4]
where 1,2,3,and 4 are row numbers
If I can also print out the numbers they share that would be great too combos = [1 2 1 2 15;...etc
댓글 수: 7
  dpb
      
      
 2017년 10월 17일
				Say what!!!??? I have no klew what the above is intending to say.
Are the three values you're trying to match those in the first three columns only or is it three out of the four in the line that are to be found?
답변 (1개)
  Guillaume
      
      
 2017년 10월 17일
        
      편집: Guillaume
      
      
 2017년 10월 17일
  
      This is O(n^2) so is going to be slow for largish matrices. I haven't got the time to think of a cleverer algorithm:
pairs = zeros(0, 5);
for row1 = 1 : size(A, 1)
   for row2 = row1+1 : size(A, 1)
      commonnumbers = intersect(A(row1, :), A(row2, :));
      if numel(commonnumbers ) == 3
         pairs = [pairs; row1, row2, commonnumbers]; %#ok<AGROW>
         break;  %assumes that there is always only one other row that matches
      end
   end
end
참고 항목
카테고리
				Help Center 및 File Exchange에서 Large Files and Big Data에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!