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

2 Ansichten (letzte 30 Tage)
John Hunt
John Hunt am 13 Okt. 2017
Kommentiert: John Hunt am 17 Okt. 2017
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 Kommentare
dpb
dpb am 17 Okt. 2017
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 am 17 Okt. 2017
three out of the four need to match three out of four for the other rows

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Guillaume
Guillaume am 17 Okt. 2017
Bearbeitet: Guillaume am 17 Okt. 2017
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 Kommentar
John Hunt
John Hunt am 17 Okt. 2017
Thank you I will go through it to see if I can get it to do what I need

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by