How to find set of 3 in a 122x4 matrix?

조회 수: 2 (최근 30일)
John Hunt
John Hunt 2017년 10월 13일
댓글: John Hunt 2017년 10월 17일
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
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?
John Hunt
John Hunt 2017년 10월 17일
three out of the four need to match three out of four for the other rows

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

답변 (1개)

Guillaume
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
  댓글 수: 1
John Hunt
John Hunt 2017년 10월 17일
Thank you I will go through it to see if I can get it to do what I need

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

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by