Pregunta

Si tengo un conjunto de datos de Y y un conjunto de bandejas con centro en X, que puede utilizar el comando HIST para encontrar cuántos de cada Y son en cada bandeja.

N = hist(Y,X)

Lo que me gustaría saber es si hay una función integrada que me puede decir qué bin cada Y entra en, por lo

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

significaría que Y (I == 1) devolvería toda la Y en bin 1, etc.

Yo sé cómo escribir esta función, por lo que sólo estoy preguntando si ya hay una incorporado en MATLAB que hace esto.

¿Fue útil?

Solución

La función relacionada histc hace esto, pero se requiere para definir los bordes del compartimiento en vez de centros de basura.

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

El cálculo de los bordes dados los bincenters es también muy fácil. En un un trazador de líneas:

N = hist(Y, X);

se convierte

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

con Nc == N, más uno bin vacío adicional en el extremo (desde Asumo ningún valor en Y coincide inf). Ver doc histc.

Otros consejos

Si uno está satisfecho con el uso de bordes bin en lugar de los compartimientos, el

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

funciona. Aaargh, Matlab sus definiciones de funciones son tan nonintuitive

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top