2012-08-06 1 views
5

나는 100 개의 샘플링 된 숫자가 있으며, 나는 matlab에 정규 분포 곡선을 그릴 필요가 있습니다.Matlab에서 샘플의 정규 분포 그래프 그리기

이러한 샘플링 된 데이터의 평균 및 표준 편차는 쉽게 계산할 수 있지만 정규 분포를 나타내는 함수가 있습니까?

답변

7

당신이 통계 도구 상자에 액세스 할 수있는 경우,이 함수 histfit 내가 당신이 필요로하는 무슨 생각을 수행합니다

>> x = randn(10000,1); 
>> histfit(x) 
그냥 hist 명령과 같은

Normal distribution plot

, 당신 bin 수를 지정할 수도 있고, 어떤 배포판이 사용되는지 지정할 수도 있습니다 (기본적으로 정규 분포).

Statistics Toolbox가없는 경우 @Gunther 및 @learnvst의 답을 조합하여 유사한 효과를 재현 할 수 있습니다.

+2

+1 멋진, 정확히 OP가 찾고있는 –

+0

와우. 나는 이것을 정확히 찾고 있었다. 감사 :) – ManiAm

5

사용 hist : 당신은 또한 그릴 빈의 수를 지정할 수 있습니다

enter image description here

, 예를 들면 :

hist(data,5) 

hist(data) 

그것은 당신의 데이터의 히스토그램 플롯을 그립니다

결과로 그리는 경우에만 pdf는 사용하여 직접 만들 :

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); 
당신은 아마 이전 hist 플롯에 오버레이 할 수 있습니다 (내가 먼저 그러나 일을 확장 할 필요가 있다고 생각

는 PDF는 0-1 범위에 있고, 히스토그램에 범위 : 빈당 요소 수).

4

데이터에 대해 가우스 분포를 그리려면 다음 코드를 사용하여 평균 및 표준 편차 값을 데이터 집합에서 계산 된 값으로 바꿉니다.

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

이 예에서 배열 x은 분포의 X- 축, 그래서 당신은 어떤 범위와 샘플링 밀도가 변경합니다.

신호 처리 도구 상자를 사용하지 않고 데이터에 Gaussian 피트를 그리려면 다음 코드가 올바른 플롯으로 해당 플롯을 그립니다. y을 자신의 데이터로 바꾸십시오.

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