Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Reemplace las instancias desalentados de hist e histc

Funciones de histograma antiguas (,)histhistc

Las versiones anteriores de usar el y funciones como la forma principal de crear histogramas y calcular recuentos de ubicación de histograma.MATLAB®histhistc Estas funciones, aunque son buenas para algunos propósitos generales, tienen capacidades generales limitadas. El uso de y en el nuevo código se desaconseja por estas razones (entre otras):histhistc

  • Después de usar para crear un histograma, la modificación de las propiedades del histograma es difícil y requiere la recomputación de todo el histograma.hist

  • El comportamiento predeterminado de es utilizar 10 bins, que no es adecuado para muchos conjuntos de datos.hist

  • El trazado de un histograma normalizado requiere cálculos manuales.

  • y no tienen un comportamiento consistente.histhistc

Funciones de histograma recomendadas

El, y funciones de avanzar dramáticamente las capacidades de creación y cálculo de histograma en, mientras que todavía promueve la consistencia y facilidad de uso. , y son las funciones de creación y cálculo del histograma recomendadas para el nuevo código.histogramhistcountsdiscretizeMATLABhistogramhistcountsdiscretize

De particular nota son los siguientes cambios, que se destacan y:improvementshisthistc

  • puede devolver un objeto de histograma.histogram Puede utilizar el objeto para modificar las propiedades del histograma.

  • Ambos y tienen capacidades de discretización y de normalización automáticas, con varias opciones comunes incorporadas.histogramhistcounts

  • es la función de cálculo principal para.histcountshistogram El resultado es que las funciones tienen un comportamiento consistente.

  • proporciona opciones adicionales y flexibilidad para determinar la ubicación de ubicación de cada elemento.discretize

Diferencias que requieren actualizaciones de código

A pesar de las mejoras mencionadas, hay varios importantes entre las funciones antiguas y ahora recomendadas, que podrían requerir la actualización de su código.differences En las tablas se resumen las diferencias entre las funciones y se proporcionan sugerencias para actualizar el código.

Actualizaciones de código parahist

DiferenciaComportamiento antiguo conhistNuevo comportamiento conhistogram

Las matrices de entrada

crea un histograma para cada columna de una matriz de entrada y traza los histogramas en paralelo en la misma figura.hist

A = randn(100,2); hist(A)

trata la matriz de entrada como un solo vector alto y crea un solo histograma.histogram Para trazar varios histogramas, cree un objeto de histograma diferente para cada columna de datos. Utilice el comando para trazar los histogramas en la misma figura.hold on

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 bordes de ubicación para cada histograma, pero en algunos casos es mejor establecer el mismo de cada histograma para que sea el mismo en su lugar.BinWidth Además, para fines de visualización, podría ser útil establecer la propiedad de cada histograma, ya que esto afecta a la transparencia de las barras superpuestas.FaceAlpha

Especificación de bin

acepta el contenedor como una segunda entrada.histcenters

acepta el contenedor como una segunda entrada.histogramedges

Para convertir centros de ubicación en aristas de ubicación para utilizarlos con, consulte.histogramConvertir centros de ubicación en aristas de ubicación

Nota

En los casos en los que los centros de ubicación utilizados son enteros, como, por ejemplo, utilizar el nuevo método de discretización integrado para los enteros.histhist(A,-3:3)histogram

histogram(A,'BinLimits',[-3,3],'BinMethod','integers')

Argumentos de salida

Devuelve el recuento de bin como un argumento de salida y, opcionalmente, puede devolver los centros de ubicación como un segundo argumento de salida.hist

A = randn(100,1); [N, Centers] = hist(A)

Devuelve un objeto de histograma como un argumento de salida.histogram El objeto contiene muchas propiedades de interés (recuentos de ubicación, aristas de ubicación, etcétera). Puede modificar los aspectos del histograma cambiando sus valores de propiedad. Para obtener más información, consulte.histogram

A = randn(100,1); h = histogram(A); N = h.Values Edges = h.BinEdges

Nota

Para calcular recuentos de ubicación (sin trazar un histograma), reemplace con.[N, Centers] = hist(A)[N,edges] = histcounts(A,nbins)

El número predeterminado de bins

utiliza 10 bins de forma predeterminada.hist

Ambos y utilizar un algoritmo de discretización automática de forma predeterminada.histogramhistcounts El número de bins está determinado por el tamaño y la propagación de los datos de entrada.

A = randn(100,1); histogram(A) histcounts(A)

Los límites de bin

utiliza los valores de datos finitos mínimos y máximos para determinar los bordes izquierdo y derecho de la primera y la última barra del trazado. y se incluyen en la primera y última ubicación, respectivamente.hist-InfInf

Si no se establece, a continuación, utiliza límites de bin racionales basados en, pero no exactamente igual a, los valores de datos finitos mínimos y máximos. omite los valores a menos que una de las aristas de ubicación especifique explícitamente o como una arista de ubicación.BinLimitshistogramhistogramInfInf-Inf

Para reproducir los resultados de los datos finitos (sin valores), utilice 10 bins y establezca explícitamente los valores de datos mínimos y máximos.hist(A)InfBinLimits

A = randi(5,100,1); histogram(A,10,'BinLimits',[min(A) max(A)])

Actualizaciones de código parahistc

DiferenciaComportamiento antiguo conhistcNuevo comportamiento conhistcounts
Las matrices de entrada

calcula los recuentos de ubicación para cada columna de datos de entrada.histc Para una matriz de entrada de tamaño por-, devuelve una matriz de recuentos de bin de tamaño por.mnhistclength(edges)n

A = randn(100,10); edges = -4:4; N = histc(A,edges)

trata la matriz de entrada como un solo vector alto y calcula los recuentos de bin para toda la matriz.histcounts

A = randn(100,10); edges = -4:4; N = histcounts(A,edges)

Utilice un bucle for para calcular los recuentos de ubicación sobre 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 a un gran número de columnas de la matriz, considere la posibilidad de continuar utilizando para los recuentos de ubicación de columna.histc

Los valores incluidos en la última bandeja

incluye un elemento en la última ubicación si.histcA(i)A(i) == edges(end) La salida, es un vector con elementos que contienen los recuentos de bin.Nlength(edges) Los valores que caen fuera de los bins no se cuentan.

incluye un elemento en la última ubicación si.histcountsA(i)edges(end-1) <= A(i) <= edges(end) En otras palabras, combina los dos últimos bins en un único contenedor final.histcountshistc La salida, es un vector con elementos que contienen los recuentos de bin.Nlength(edges)-1 Si especifica las aristas de la ubicación, no se contabilizarán los valores que caen fuera de las ubicaciones. De lo contrario, determina automáticamente las aristas de ubicación apropiadas que se usarán para incluir todos los datos.histcounts

A = 1:4; edges = [1 2 2.5 3] N = histcounts(A) N = histcounts(A,edges) 

La última ubicación de es principalmente útil para contar los enteros.histc Para realizar este recuento de enteros, utilice el método bin:histcounts'integers'

N = histcounts(A,'BinMethod','integers'); 
Argumentos de salida

Devuelve los recuentos de ubicación como un argumento de salida y, opcionalmente, puede devolver los índices de ubicación como un segundo argumento de salida.histc

A = randn(15,1); edges = -4:4; [N,Bin] = histc(A,edges)
  • Para cálculos de recuento de bin como o, use.N = histc(A,edges)[N,bin] = histc(A,edges)histcounts La función devuelve el recuento de bin como un argumento de salida y, opcionalmente, puede devolver los bordes de la ubicación como una segunda salida, o los índices de ubicación como una tercera salida.histcounts

    A = randn(15,1); [N,Edges,Bin] = histcounts(A)
  • Para cálculos de ubicación de ubicación como, use.[~,Bin] = histc(A,edges)discretize La función ofrece opciones adicionales para determinar la ubicación de la ubicación de cada elemento.discretize

    A = randn(15,1); edges = -4:4; Bin = discretize(A,edges)

Convertir centros de ubicación en aristas de ubicación

La función acepta centros de ubicación, mientras que la función acepta aristas de ubicación.histhistogram Para actualizar el código que se usará, es posible que deba convertir los centros de ubicación en aristas de ubicación para reproducir los resultados obtenidos.histogramhist

Por ejemplo, especifique centros de ubicación para utilizarlos 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 ubicación en aristas de ubicación, calcule el punto medio entre valores consecutivos.centers Este método reproduce los resultados de anchos de bin uniformes y no uniformes.hist

d = diff(centers)/2; edges = [centers(1)-d(1), centers(1:end-1)+d, centers(end)+d(end)];

La función incluye valores que caen en el borde derecho de cada bin (la primera bin incluye ambas aristas), mientras que incluye valores que caen en el borde izquierdo de cada bin (y la última bandeja incluye ambas aristas).histhistogram Desplace ligeramente los bordes de la papelera 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

Ahora, use con los bordes de la papelera.histogram

histogram(A,edges)