2012-03-11 3 views
0

J'ai une matrice A avec des éléments entiers de 0 à N-1.MATLAB: comment calculer la distribution des éléments dans la matrice

Ce que je dois obtenir est un vecteur V de longueur N qui, pour Contiendra chaque position "i" nombre d'éléments égaux à "i" dans la matrice A.

Par exemple:

N = 6 

A: 

0 0 1 
1 2 3 
3 5 0 

V: 

3 2 1 2 0 1 0 

Quelle est la manière efficace de faire ceci?

Ma matrice réelle est d'environ 10K x 10K éléments et N est environ 100.

Répondre

2

Utilisez v = histc(A(:), 0:(N-1)). Pour obtenir exactement votre résultat, exécutez v = v'.

2

Vous voulez utiliser histc (après reshape pour convertir un vecteur)

n = histc (x, bords) compte le nombre de valeurs dans le vecteur x qui tombent entre les éléments dans le vecteur de bords (qui doit contenir valeurs monotones non décroissantes). n est un vecteur de longueur (bords) contenant ces comptes.

V = histc(reshape(A,1,[]), 0:(N-1)); 
Questions connexes