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 Commenti

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 ?

Accedi per commentare.

 Risposta accettata

Torsten
Torsten il 11 Dic 2022
Modificato: Torsten il 11 Dic 2022
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

Più risposte (1)

Matt J
Matt J il 11 Dic 2022
Modificato: Matt J il 11 Dic 2022
Use edges to get a list of all the edges of the triangulation. Then loop over the list and use edgeAttachments.

Prodotti

Release

R2022b

Richiesto:

il 11 Dic 2022

Commentato:

il 11 Dic 2022

Community Treasure Hunt

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

Start Hunting!

Translated by