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 件のコメント

Image Analyst
Image Analyst 2022 年 12 月 11 日
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.
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 日

0 投票

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 日

0 投票

Use edges to get a list of all the edges of the triangulation. Then loop over the list and use edgeAttachments.

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

製品

リリース

R2022b

タグ

質問済み:

2022 年 12 月 11 日

コメント済み:

2022 年 12 月 11 日

Community Treasure Hunt

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

Start Hunting!

Translated by