2012-08-06 41 views

Respuesta

7

Si usted tiene acceso a Statistics Toolbox, la función histfit hace lo que yo creo que necesita:

>> x = randn(10000,1); 
>> histfit(x) 

Normal distribution plot

Al igual que con el comando hist, se también puede especificar el número de contenedores, y también puede especificar qué distribución se utiliza (de forma predeterminada, es una distribución normal).

Si no tiene Statistics Toolbox, puede reproducir un efecto similar usando una combinación de las respuestas de @Gunther y @learnvst.

+2

+1 bueno, exactamente lo que OP está buscando –

+0

woow. Estaba buscando exactamente esto. Gracias :) – ManiAm

5

Uso hist:

hist(data) 

Se dibuja un histograma de los datos:

enter image description here

También puede especificar el número de contenedores para dibujar, por ejemplo:

hist(data,5) 

Si solo desea dibujar el resultado pdf, crear usted mismo usando:

mu=mean(data); 
sg=std(data); 
x=linspace(mu-4*sg,mu+4*sg,200); 
pdfx=1/sqrt(2*pi)/sg*exp(-(x-mu).^2/(2*sg^2)); 
plot(x,pdfx); 

es probable que pueda superponer esto en el hist trama anterior (I piensa que necesita para escalar lo primero sin embargo, el PDF es en el rango de 0-1, y el histograma se encuentra en el rango: número de elementos por contenedor).

4

Si desea dibujar una distribución gaussiana para sus datos, puede usar el siguiente código, reemplazando los valores medios y de desviación estándar con los calculados a partir de su conjunto de datos.

STD = 1; 
MEAN = 2; 
x = -4:0.1:4; 
f = ( 1/(STD*sqrt(2*pi)) ) * exp(-0.5*((x-MEAN)/STD).^2 ); 

hold on; plot (x,f); 

La matriz x en este ejemplo es el eje x de su distribución, por lo que cambiar a cualquier rango de muestreo y la densidad que tiene.

Si desea dibujar su ajuste gaussiano sobre sus datos sin la ayuda de la caja de herramientas de procesamiento de señal, el siguiente código dibujará una gráfica con la escala correcta. Simplemente reemplace y con sus propios datos.

y = randn(1000,1) + 2; 
x = -4:0.1:6; 

n = hist(y,x); 

bar (x,n); 

MEAN = mean(y); 
STD = sqrt(mean((y - MEAN).^2)); 


f = ( 1/(STD*sqrt(2*pi)) ) * exp(-0.5*((x-MEAN)/STD).^2 ); 
f = f*sum(n)/sum(f); 

hold on; plot (x,f, 'r', 'LineWidth', 2); 

enter image description here

Cuestiones relacionadas