行列の重複している行を削除する方法

同じ要素を持った行がいくつかある際、上の行1行だけを残して残りを削除したいと考えています。
削除したあとの行列の並びはそのままです。
unique関数を利用して試行錯誤しているのですがうまくいきません。
以下具体例を挙げます。
例えば以下のような行列を考えます。
A= [1, 0, 1, 1, 1 ; 0, 1, 1, 0, 0 ; 0, 0, 0, 1, 1 ; 1, 0, 1, 1, 1 ; 1, 1, 0, 1, 1 ; 0, 0, 0, 1, 1]
このとき1行目と4行目、3行目と6行目がそれぞれすべて同じ要素を持っています。
1行目と3行目を残して4行目と6行目を削除する方法はありますでしょうか。
1行目から2行目、3行目...と見ていった際に重複していたら削除する、というものになります。
例での最終的にほしい行列は
B= [1, 0, 1, 1, 1 ; 0, 1, 1, 0, 0 ; 0, 0, 0, 1, 1 ; 1, 1, 0, 1, 1 ; ]
になります。

 채택된 답변

Akira Agata
Akira Agata 2020년 10월 26일

1 개 추천

unique 関数の順序フラグを 'stable' に指定することで実現可能かと思います。
A = [1, 0, 1, 1, 1 ; 0, 1, 1, 0, 0 ; 0, 0, 0, 1, 1 ; 1, 0, 1, 1, 1 ; 1, 1, 0, 1, 1 ; 0, 0, 0, 1, 1];
B = unique(A,'stable','rows');

댓글 수: 1

HIRO HAGI
HIRO HAGI 2020년 10월 26일
大変参考になりました。有難うございます。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 コマンドの入力에 대해 자세히 알아보기

태그

질문:

2020년 10월 26일

댓글:

2020년 10월 26일

Community Treasure Hunt

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

Start Hunting!