Find the rows have two same elements from a matrix

I have a matrix (each row represents a traingle and each element represents a vertex ID of that traingle), I want to find which two traingles have two same vertices. This question can be demonstrated by the following example, for a matrix like the following:
1 9 8
2 7 8
5 8 9
6 5 4
7 3 8
5 4 8
the output would be [1, 3], [2, 5], and [3, 6], which are the rows have two same elements.

3 Comments

What does each row and each column represent? Are you having triangles in 3-D, like (x, y, z)?
This looks like a homework problem. If you have any questions ask your instructor or read the link below to get started:
Obviously we can't give you the full solution because you're not allowed to turn in our code as your own.
This is not a homework question but a research one.
Each row represents a trainlge (consists of three vertices).
A research is no homework ? Then you don't work at home for your research ?

Sign in to comment.

 Accepted Answer

A = [1 9 8
2 7 8
5 8 9
6 5 4
7 3 8
5 4 8];
[I,J] = meshgrid(1:size(A,1),1:size(A,1));
[rows cols] = find(arrayfun(@(i,j)numel(intersect(A(i,:),A(j,:))),I,J)==2);
tuples = [rows(rows < cols),cols(rows < cols)]
tuples = 4×2
1 3 2 5 3 6 4 6

More Answers (1)

Matt J
Matt J on 11 Dec 2022
Edited: Matt J on 11 Dec 2022
Use edges to get a list of all the edges of the triangulation. Then loop over the list and use edgeAttachments.

Products

Release

R2022b

Asked:

on 11 Dec 2022

Commented:

on 11 Dec 2022

Community Treasure Hunt

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

Start Hunting!