Reemplazar las instancias no recomendadas de hist e histc
Funciones de histograma anteriores (hist, histc)
Las versiones anteriores de MATLAB® utilizan las funciones hist e histc como el método principal para crear histogramas y calcular los recuentos de bin del histograma. Estas funciones, aunque son adecuadas para algunos fines generales, cuentan con capacidades generales limitadas. No se recomienda el uso de hist e histc en nuevo código por estos motivos (entre otros):
Tras utilizar
histpara crear un histograma, modificar las propiedades del histograma resulta complicado y requiere volver a calcular todo el histograma.El comportamiento predeterminado de
histes utilizar 10 bins, lo que no es indicado para muchos conjuntos de datos.La representación de un histograma normalizado requiere de cálculos manuales.
histehistcno tienen un comportamiento coherente.
Funciones de histograma recomendadas
Las funciones histogram, histcounts y discretize desarrollan drásticamente las capacidades de creación y cálculo de histogramas en MATLAB, a la vez que se sigue fomentando la coherencia y la facilidad de uso. histogram, histcounts y discretize son las funciones recomendadas para la creación y el cálculo de histogramas para nuevo código.
Hay que destacar los siguientes cambios, que se presentan como mejoras de hist e histc:
histogrampuede devolver un objeto de histograma. Se puede utilizar el objeto para modificar las propiedades del histograma.histogramehistcountscuentan con capacidades de combinación y normalización automáticas, con varias opciones frecuentes integradas.histcountses la función de cálculo principal parahistogram. El resultado es que las funciones presentan un comportamiento coherente.discretizeofrece flexibilidad y opciones adicionales para determinar la colocación del bin de cada elemento.
Diferencias que requieren actualizaciones de código
A pesar de las mejoras mencionadas anteriormente, existen varias diferencias importantes entre las funciones anteriores y las que ahora se recomiendan, que podrían requerir de la actualización del código. La tabla resume las diferencias entre las funciones y ofrece sugerencias para actualizar el código.
Actualizaciones de código para hist
| Diferencia | Antiguo comportamiento con hist | Nuevo comportamiento con histogram |
|---|---|---|
Matrices de entrada |
A = randn(100,2); hist(A) |
A = randn(100,2); h1 = histogram(A(:,1),10) edges = h1.BinEdges; hold on h2 = histogram(A(:,2),edges) El ejemplo de código anterior utiliza los mismos extremos del bin, pero en determinados casos es mejor definir que la propiedad |
Especificación de bin |
|
Para convertir los centros de bin en extremos para su uso con Nota En los casos en que los centros de bin que se utilizan con histogram(A,'BinLimits',[-3,3],'BinMethod','integers') |
Argumentos de salida |
A = randn(100,1); [N, Centers] = hist(A) |
A = randn(100,1); h = histogram(A); N = h.Values Edges = h.BinEdges Nota Para calcular los recuentos de bin (sin representar un histograma), sustituya |
Número predeterminado de bins |
|
A = randn(100,1); histogram(A) histcounts(A) |
Límites de bin |
| Si no se ha configurado Para reproducir los resultados de A = randi(5,100,1); histogram(A,10,'BinLimits',[min(A) max(A)]) |
Actualizaciones de código para histc
| Diferencia | Antiguo comportamiento con histc | Nuevo comportamiento con histcounts |
|---|---|---|
| Matrices de entrada |
A = randn(100,10); edges = -4:4; N = histc(A,edges) |
A = randn(100,10); edges = -4:4; N = histcounts(A,edges) Utilice un bucle for para calcular recuentos de bin en cada columna. A = randn(100,10); nbins = 10; N = zeros(nbins, size(A,2)); for k = 1:size(A,2) N(:,k) = histcounts(A(:,k),nbins); end Si el rendimiento es un problema debido al gran número de columnas en la matriz, considere seguir utilizando |
| Valores incluidos en el último bin |
|
A = 1:4; edges = [1 2 2.5 3] N = histcounts(A) N = histcounts(A,edges) El último bin de N = histcounts(A,'BinMethod','integers'); |
| Argumentos de salida |
A = randn(15,1); edges = -4:4; [N,Bin] = histc(A,edges) |
|
Convertir centros de bin en extremos de bin
La función hist acepta los centros de bin, mientras que la función histogram acepta los extremos de bin. Si desea actualizar el código para utilizar histogram, puede que tenga que convertir los centros de bin en extremos de bin para reproducir los resultados logrados con hist.
Por ejemplo, especifique centros de bin para su uso con hist. Estos bins tienen un ancho uniforme.
A = [-9 -6 -5 -2 0 1 3 3 4 7]; centers = [-7.5 -2.5 2.5 7.5]; hist(A,centers)

Para convertir los centros de bin en extremos de bin, calcule el punto intermedio entre los valores consecutivos en centers. Este método reproduce los resultados de hist para los anchos de bin uniformes y no uniformes.
d = diff(centers)/2; edges = [centers(1)-d(1), centers(1:end-1)+d, centers(end)+d(end)];
La función hist incluye los valores que se encuentran en el extremo derecho de cada bin (el primer bin incluye los dos extremos), mientras que histogram incluye los valores que se encuentran en el extremo izquierdo de cada bin (y el último bin incluye los dos extremos). Cambie los extremos de bin mínimamente para obtener los mismos recuentos de bin que hist.
edges(2:end) = edges(2:end)+eps(edges(2:end))
edges = 1×5
-10.0000 -5.0000 0.0000 5.0000 10.0000
Luego, utilice histogram con los extremos del bin.
histogram(A,edges)
