2010-09-30 7 views
4

Si j'ai un ensemble de données Y et un ensemble de bacs centrés sur X, je peux utiliser la commande HIST pour trouver le nombre de Y dans chaque bac.Tri des éléments dans des bacs dans MATLAB

N = hist(Y,X) 

Ce que je voudrais savoir est s'il y a une fonction intégrée qui peut me dire quel bin chaque Y va dans, si

[N,I] = histMod(Y,X) 

signifierait que Y (I == 1) Je renverrai tout le Y dans le bin 1, etc.

Je sais écrire cette fonction, donc je me demande seulement s'il y a déjà un MATLAB intégré qui le fait.

Répondre

6

La fonction associée histc le fait, mais vous devez définir les bords de la corbeille au lieu des centres de la corbeille.

Y = rand(1, 10); 
edges = .1:.1:1; 
[N, I] = histc(Y, edges); 

Calculer les bords étant donné les bincenters est facile aussi. Dans une seule ligne:

N = hist(Y, X); 

devient

[Nc, Ic] = histc(Y, [-inf X(1:end-1) + diff(X)/2, inf]); 

avec Nc == N, plus un bac supplémentaire vide à la fin (puisque je suppose aucune valeur correspond Y inf). Voir doc histc.

+0

En fait, la conversion entre les centres de la cellule et les bords de la corbeille est non triviale si les centres de la corbeille ne sont pas régulièrement espacés. MATLABs hist commande se trompe vraiment, je pense. Mais oui, c'est assez bon. Merci. – Marc

2

Si on se contente d'en utilisant bin bords au lieu des bacs,

[N,bin] = histc(y,binedges) 

œuvres. Aaargh, MATLAB vos définitions de fonctions sont si non intuitives

Questions connexes