2017-10-17 4 views
1

J'ai une matrice comme suit,Comment puis-je compter le nombre d'occurrences d'une ligne unique dans MATLAB?

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 

je pouvais extraire des lignes uniques dans cette matrice en utilisant la commande A_unique = unique(A,'rows') et le résultat comme suit

A_unique = 

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

Je dois trouver nombre de fois les lignes existe dans la matrice principale A quelque chose comme suit

A_unique_count = 

    2 
    3 
    2 
    1 

Comment puis-je trouver COU nt de lignes uniques? Quelqu'un peut-il aider? Merci à l'avance

Manu

Répondre

5

La troisième sortie de unique vous donne l'indice de la ligne unique dans le tableau original. Vous pouvez l'utiliser avec accumarray pour compter le nombre d'occurrences.

Par exemple:

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) 

Retours:

noccurrences = 

    2 
    3 
    2 
    1 

Comme prévu

2

Je recommande @excaza's approach. Mais juste pour la variété:

A_unique_count = diff([0; find([any(diff(sortrows(A), [], 1), 2); 1])]);