100個のサンプル数があり、MATLABでそれらの正規分布曲線を描く必要があります。
これらのサンプリングされたデータの平均と標準偏差は簡単に計算できますが、正規分布をプロットする関数はありますか?
100個のサンプル数があり、MATLABでそれらの正規分布曲線を描く必要があります。
これらのサンプリングされたデータの平均と標準偏差は簡単に計算できますが、正規分布をプロットする関数はありますか?
Statistics Toolboxにアクセスできる場合、この関数histfit
は必要と思われることを実行します。
>> x = randn(10000,1);
>> histfit(x)
コマンドと同様に、hist
ビンの数を指定することもできます。また、使用する分布を指定することもできます(デフォルトでは正規分布です)。
Statistics Toolboxがない場合は、@ Guntherと@learnvstの回答を組み合わせて、同様の効果を再現できます。
histを使用します:
hist(data)
データのヒストグラムプロットを描画します。
描画するビンの数を指定することもできます。例:
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の範囲で、ヒストグラムは次の範囲にあります:ビンあたりの要素数)。
データのガウス分布を描画する場合は、次のコードを使用して、平均値と標準偏差値をデータセットから計算された値に置き換えることができます。
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);