Azzera filtri
Azzera filtri

Find the rows have two same elements from a matrix

1 visualizzazione (ultimi 30 giorni)
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
Jiafeng Ye
Jiafeng Ye il 11 Dic 2022
This is not a homework question but a research one.
Each row represents a trainlge (consists of three vertices).
Torsten
Torsten il 11 Dic 2022
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.

Categorie

Scopri di più su Programming in Help Center e File Exchange

Prodotti


Release

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by