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

21 vues (au cours des 30 derniers jours)
HIRO HAGI
HIRO HAGI le 26 Oct 2020
Commenté : HIRO HAGI le 26 Oct 2020
同じ要素を持った行がいくつかある際、上の行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 ; ]
になります。

Réponse acceptée

Akira Agata
Akira Agata le 26 Oct 2020
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 commentaire
HIRO HAGI
HIRO HAGI le 26 Oct 2020
大変参考になりました。有難うございます。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur コマンドの入力 dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!