Question

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 combien de chaque Y sont dans chaque bac.

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, donc

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

signifie que Y (I == 1) retournera tous les Y dans le bac 1, etc.

Je sais comment écrire cette fonction, donc je ne demandais s'il y a déjà intégré dans MATLAB qui fait cela.

Était-ce utile?

La solution

La fonction liée histc fait cela, mais il vous oblige à définir les bords de bin au lieu des centres de bin.

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

Le calcul des 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 que pas de valeur en Y correspond inf). Voir doc histc.

Autres conseils

Si l'on est satisfait à l'utilisation des bords de poubelle au lieu de bacs,

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

fonctionne. Aaargh, Matlab vos définitions de fonctions sont si non intuitive

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top