行列の重複している行を削除する方法
조회 수: 23 (최근 30일)
이전 댓글 표시
同じ要素を持った行がいくつかある際、上の行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 ; ]
になります。
댓글 수: 0
채택된 답변
Akira Agata
2020년 10월 26일
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');
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!