Find the rows have two same elements from a matrix

3 Ansichten (letzte 30 Tage)
Jiafeng Ye
Jiafeng Ye am 11 Dez. 2022
Kommentiert: Torsten am 11 Dez. 2022
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 Kommentare
Jiafeng Ye
Jiafeng Ye am 11 Dez. 2022
This is not a homework question but a research one.
Each row represents a trainlge (consists of three vertices).
Torsten
Torsten am 11 Dez. 2022
A research is no homework ? Then you don't work at home for your research ?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Torsten
Torsten am 11 Dez. 2022
Bearbeitet: Torsten am 11 Dez. 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

Weitere Antworten (1)

Matt J
Matt J am 11 Dez. 2022
Bearbeitet: Matt J am 11 Dez. 2022
Use edges to get a list of all the edges of the triangulation. Then loop over the list and use edgeAttachments.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by