2012-08-06 13 views
5

Ich habe 100 Stichprobenzahlen, und ich muss die normale Verteilungskurve von ihnen in Matlab zeichnen.Zeichnen Normalverteilung Graph einer Probe in Matlab

Der Mittelwert und die Standardabweichung dieser abgetasteten Daten kann leicht berechnet werden, aber gibt es irgendeine Funktion, die die Normalverteilung aufträgt?

Antwort

7

Wenn Sie Zugriff auf Statistics Toolbox haben, die Funktion histfit tut, was ich glaube, Sie brauchen:

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

Normal distribution plot

Genau wie mit dem hist Befehl, Sie Sie können auch die Anzahl der Bins angeben, und Sie können auch angeben, welche Distribution verwendet wird (standardmäßig ist dies der Fall) eine normale Verteilung).

Wenn Sie nicht über die Statistik-Toolbox verfügen, können Sie einen ähnlichen Effekt mit einer Kombination der Antworten von @Gunther und @learnvst reproduzieren.

+2

+1 schön, genau was OP sucht –

+0

woow. Ich habe genau danach gesucht. Vielen Dank :) – ManiAm

5

Verwendung hist:

hist(data) 

Es zeichnet ein Histogramm Ihrer Daten:

enter image description here

Sie auch die Anzahl der Bins angeben zu ziehen, zB:

hist(data,5) 

Wenn Sie nur die resultierendezeichnen möchten, erstellen Sie es selbst mit:

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); 

Sie wahrscheinlich diese auf der vorherigen hist Grundstück überlagern können (ich glaube, Sie brauchen, um Dinge zu skalieren zunächst jedoch die pdf im Bereich 0-1, und das Histogramm in der Bereich: Anzahl der Elemente pro Fach).

4

Wenn Sie eine Gauß-Verteilung für Ihre Daten erstellen möchten, können Sie den folgenden Code verwenden, indem Sie die Werte für Mittelwert und Standardabweichung durch die aus Ihrem Datensatz berechneten Werte ersetzen.

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); 

Das Array x in diesem Beispiel ist die x-Achse der Distribution, so dass Sie sich unabhängig von Dichtebereich und Probenahme ändern.

Wenn Sie Ihre Gauß-Fit über Ihre Daten ohne Hilfe der Signalverarbeitung Toolbox zeichnen möchten, wird der folgende Code eine solche Zeichnung mit der richtigen Skalierung zeichnen. Ersetzen Sie einfach y durch Ihre eigenen Daten.

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