Clear Filters
Clear Filters

Find the rows have two same elements from a matrix

1 view (last 30 days)
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
Jiafeng Ye
Jiafeng Ye on 11 Dec 2022
This is not a homework question but a research one.
Each row represents a trainlge (consists of three vertices).
Torsten
Torsten on 11 Dec 2022
A research is no homework ? Then you don't work at home for your research ?

Sign in to comment.

Accepted Answer

Torsten
Torsten on 11 Dec 2022
Edited: Torsten on 11 Dec 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

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.

Categories

Find more on Programming in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!