2016-07-14 6 views
0

平均を中心にしてN個の正規分布点を作成するにはどうすればよいですか?私は、各点の座標を構造体に格納できるアプローチに感謝します。私は以下のコードを試しましたmatlabの正方形内に通常分布している点

for i=1:200 
S(i).x=randn*200; 
S(i).y=randn*200; 
plot(S(i).x,S(i).y,'.'); 
axis([0 200 0 200]); 
end 

しかし、私は負の値を持っていることを観察しました。正方形内の中心(100,100)を使用して、200×200の正方形の場合、0〜200の間の正規分布点を保存します。ありがとう

+1

あなたの例では、平面上の無相関正規分布からのサンプルを生成します。多変量正規分布関数 'mvnrnd'を使うと、分布の平均と分散の両方を適切に指定することができます。 – Kavka

答えて

1

には、以下のMATLABのStatistics Toolboxが必要です。定義により、[0, N]の範囲内に正規分布した乱数しか生成しない、切り詰められた正規分布を作成することができます。

% Create a normal distribution 
N = 200; 
pd = makedist('Normal', 'mu', N/2, 'sigma', 60) 

% Truncate the normal distribution to [0,N] 
t = truncate(pd, 0, N) 

% Samples from normal distribution 
x = pd.random(N,1); 
y = pd.random(N,1); 
subplot(211) 
plot(x,y,'bx') 
title('Normal Distribution') 

% Samples from truncated distribution 
x = t.random(N,1); 
y = t.random(N,1); 
subplot(212) 
plot(x,y,'ro') 
title('Truncated Normal Distribution') 

これは、次のようなものになるでしょう:

enter image description here

0

を一様に分散ポイントを生成するにはrandを使用する必要があります。
randn通常分散ポイントのために使用され、あなたが結果に平均値を追加する必要がある100の周りに正規分布の点を中心に負の値

を得る理由です:

S(i).x = randn*200 + 100; 
+0

ありがとう!私は実際に正規分布点を意味しました。私はちょうどその問題を訂正しました。 – Abdulhameed

+0

@Abdulhameed私の編集 – Shai

+0

を参照してください。均一分布とは異なり、正常分布は制限されず、200より大きく0より小さい値を持つことができます。 – Shai

関連する問題