2017-10-17 32 views
1

は、私はそれぞれの行が中に存在する回数を見つける必要があるMATLABで一意の行の出現回数をどのように数えることができますか?

A_unique = 

    1  2  3 
    4  5  6 
    7  8  9 
    10 11 12 

を次のように私はコマンドA_unique = unique(A,'rows')を使用して、この行列に一意の行を抽出し、可能性があり

A = 

    1  2  3 
    4  5  6 
    7  8  9 
    10 11 12 
    4  5  6 
    7  8  9 
    4  5  6 
    1  2  3 

次のような行列を、持っています

A_unique_count = 

    2 
    3 
    2 
    1 

を、次のようないくつかの事はどのように私はCOU見つけることができます主なマトリックスA ユニークな行のnt?誰も助けることができますか?事前のおかげで

マヌー

答えて

5

uniqueの第3の出力は、あなたの元の配列内の一意の行のインデックスを提供します。 accumarrayでこれを使用して、出現回数を数えることができます。例えば

A = [1  2  3 
    4  5  6 
    7  8  9 
    10 11 12 
    4  5  6 
    7  8  9 
    4  5  6 
    1  2  3]; 

[uniquerow, ~, rowidx] = unique(A, 'rows'); 
noccurrences = accumarray(rowidx, 1) 

戻り値:期待

2

として

noccurrences = 

    2 
    3 
    2 
    1 

私は@excaza's approachをお勧めします。しかし、種類だけのために:

A_unique_count = diff([0; find([any(diff(sortrows(A), [], 1), 2); 1])]); 
関連する問題