2016-07-14 189 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