2016-07-14 62 views
0

如何在N×N的正方形內創建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)的中心[mean],我想在0-200之間存儲200x200平方的正態分佈點。謝謝

+1

你的榜樣,從飛機上不相關的正態分佈生成樣本。您可以使用多變量正態分佈函數'mvnrnd'來正確指定分佈的均值和方差。 – Kavka

回答

1

以下將需要MATLAB中的統計工具箱。您可以創建一個截斷的正態分佈,根據定義,它只能生成[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

@Abdulhameed不像均勻分佈,正態分佈沒有界限,而且可以有大於200且小於零的值 – Shai