2017-02-09 5 views
-1

MATLAB削除重複行(順不同)例えば

A = [1,3; 3,1; 2,10; 10,2; 3,4; 3,4; 5,8; 9,3; 1,8] 

と私のターゲットを除去する必要が重複一つ(注文し順不同)

A = [1,3; 2,10; 3,4; 5,8; 9,3; 1,8] 

あります。

私は一意にしようとしましたが、順序のない行では機能しません。

+0

は、私の答えは役に立ちましたか? – rayryeng

答えて

4

あなたはsort行は、個別に、その後uniqueを使用して、マトリックス内の特定の出現を参照してください最初の時間を決定するために出力で見ることができます。また、行を個々のサンプルとして見て、が安定してという結果を残して、マトリックスAに表示されているものの順序を保持したいとします。並べ替えでは、各行を順不同で考えることができます。基本的には、2番目の出力はAの行にインデックスを付けるために使用され、ソートされたものではなく元のマトリックスに必要なものを抽出します。彼らはそれらに表示される結果は、エントリの順番を無視して重複行の除去、次のようになります。

[~,id,~] = unique(sort(A, 2), 'rows', 'stable'); 
out = A(id, :); 

あなたが提供した入力を使用して、我々が得る:

>> [~,id,~] = unique(sort(A, 2), 'rows', 'stable'); 
>> out = A(id, :); 

>> out 

out = 

    1  3 
    2 10 
    3  4 
    5  8 
    9  3 
    1  8