5

100個のサンプル数があり、MATLABでそれらの正規分布曲線を描く必要があります。

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

4

3 に答える 3

7

Statistics Toolboxにアクセスできる場合、この関数histfitは必要と思われることを実行します。

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

正規分布プロット

コマンドと同様に、histビンの数を指定することもできます。また、使用する分布を指定することもできます(デフォルトでは正規分布です)。

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

于 2012-08-06T16:10:10.000 に答える
5

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の範囲で、ヒストグラムは次の範囲にあります:ビンあたりの要素数)。

于 2012-08-06T16:01:32.817 に答える
5

データのガウス分布を描画する場合は、次のコードを使用して、平均値と標準偏差値をデータセットから計算された値に置き換えることができます。

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

ここに画像の説明を入力してください

于 2012-08-06T16:06:03.797 に答える