Find the rows have two same elements from a matrix

1 次查看(过去 30 天)
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 个评论
Jiafeng Ye
Jiafeng Ye 2022-12-11
This is not a homework question but a research one.
Each row represents a trainlge (consists of three vertices).
Torsten
Torsten 2022-12-11
A research is no homework ? Then you don't work at home for your research ?

请先登录,再进行评论。

采纳的回答

Torsten
Torsten 2022-12-11
编辑:Torsten 2022-12-11
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

更多回答(1 个)

Matt J
Matt J 2022-12-11
编辑:Matt J 2022-12-11
Use edges to get a list of all the edges of the triangulation. Then loop over the list and use edgeAttachments.

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

标签

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by