2012-08-06 71 views
5

私は100サンプルの数値を持っており、それらの正規分布曲線をmatlabに描画する必要があります。Matlabのサンプルの正規分布グラフを描画します

これらのサンプリングデータの平均と標準偏差は簡単に計算できますが、正規分布をプロットする関数はありますか?

答えて

7

あなたはStatistics Toolboxのへのアクセス権を持っている場合は、機能histfitは、私はあなたが必要だと思うものを行います。

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

Normal distribution plot

だけhistコマンドと同じように、あなたはbinの数を指定することもできます。また、どのディストリビューションを使用するかを指定することもできます(デフォルトでは、正規分布)。

Statistics Toolboxをお持ちでない場合は、@ Guntherと@learnvstの回答を組み合わせて同様の効果を再現できます。

+2

+1いいえ、正確にOPが探しているもの –

+0

woow。私はこれを正確に探していました。ありがとう:) – ManiAm

5

使用hist

hist(data) 

それはあなたのデータのヒストグラムプロットを描画します:

enter image description here

あなたはまた、例えば、描画するビンの数を指定することができます。

hist(data,5) 

結果を描画する場合は、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軸であるので、あなたが持っているものは何でも範囲とサンプリング密度にそれを変更します。

信号処理ツールボックスの助けを借りずにデータにガウスフィットを描画したい場合、次のコードは正しいスケーリングでそのようなプロットを描画します。 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

関連する問題