una normalizado matriz histograma graficas graficar formato estandar desviacion como matlab histogram

matriz - histograma normalizado matlab



Normalizar un histograma y tener el eje y en porcentajes en matlab (1)

Editar: Bien, respondí mi propia pregunta, leyendo un poco más las preguntas anteriores. ¡Me disculpo por hacer la pregunta! Usando el código

Y = rand(10,1); C = hist(Y); C = C ./ sum(C); bar(C)

con los datos correspondientes en lugar de los datos aleatorios funcionó bien. Solo necesito optimizar el tamaño del contenedor ahora.

Buen día, ahora sé que debes estar pensando que esto se ha preguntado mil veces. De alguna manera, probablemente tengas razón, pero no pude encontrar la respuesta a mi pregunta específica a partir de las publicaciones que encontré aquí, así que pensé que sería mejor que solo preguntara. Trataré de ser lo más claro posible, pero por favor díganme si no es evidente lo que quiero hacer

Muy bien, entonces tengo un vector (fila) con 5000 elementos, todos los cuales son enteros. Ahora lo que quiero hacer es trazar un histograma de estos 5000 elementos, pero de tal manera que el eje y brinde la oportunidad de estar en ese cierto contenedor, mientras que el eje x simplemente sigue siendo regular, como en el que da el valor de ese contenedor específico.

Ahora, lo que tenía sentido para mí era normalizar todo, pero eso no parece funcionar, al menos cómo lo estoy haciendo.

Mi primer intento fue

sums = sum(A); hist(sums/trapz(sums),50)

Omití el resto porque importa una gran cantidad de datos de un determinado archivo, lo que realmente no importa. sums = sum (A) funciona bien, y puedo ver el vector en mi matlab thingy. (¿Cómo debería llamarlo, consola?). Sin embargo, dividir por el área con trapz simplemente cambia mi eje x, no mi eje y. Todo se vuelve súper pequeño, del orden de 10 ^ -3, mientras que debería ser del orden de 10.

Ahora mirando alrededor, alguien sugirió usar

hist(sums,50) ylabels = get(gca, ''YTickLabel''); ylabels = linspace(0,1,length(ylabels)); set(gca,''YTickLabel'',ylabels);

Si bien esto ciertamente hace que el eje y vaya de 0 a 1, no está normalizado en absoluto. Quiero que realmente refleje la posibilidad de estar en un cierto contenedor. La combinación de los dos tampoco funciona. Me disculpo si la respuesta es muy obvia, simplemente no lo veo.

Editar: Aunque me doy cuenta de que esta es una pregunta separada (que se ha preguntado un millón de veces), pero el tamaño del contenedor que acabo de elegir a mano hasta que se veía bien, ya que no faltaban barras en el histograma. He visto varias secuencias de comandos diferentes que se supone que optimizan el tamaño de la papelera, pero ninguna de ellas parece hacer el mejor histograma de aspecto en todos los casos, por desgracia :( ¿Hay alguna manera fácil de elegir el tamaño, si todos los números son enteros?


(Solo para cerrar la pregunta)

El histograma es un gráfico de frecuencia absoluta, por lo que la suma de todas las frecuencias de bin (suma del vector de salida de la función hist) es siempre el número de elementos en su vector de entrada. Entonces, si desea un porcentaje de salida, todo lo que necesita hacer es dividir cada elemento en la salida por ese número total:

x = randn(10000, 1); numOfBins = 100; [histFreq, histXout] = hist(x, numOfBins); figure; bar(histXout, histFreq/sum(histFreq)*100); xlabel(''x''); ylabel(''Frequency (percent)'');

Si desea reconstruir la función de densidad de probabilidad de sus datos, debe tener en cuenta el tamaño del intervalo del histograma y dividir las frecuencias por eso:

x = randn(10000, 1); numOfBins = 100; [histFreq, histXout] = hist(x, numOfBins); binWidth = histXout(2)-histXout(1); figure; bar(histXout, histFreq/binWidth/sum(histFreq)); xlabel(''x''); ylabel(''PDF: f(x)''); hold on % fit a normal dist to check the pdf PD = fitdist(x, ''normal''); plot(histXout, pdf(PD, histXout), ''r'');