在matlab中的正方形内正常分布的点

时间:2016-07-14 18:25:48

标签: matlab matlab-figure normal-distribution

如何在N x N平方内创建N个正态分布点,平均值位于中心(更多点集中在中心)。我将不胜感激一种方法,其中每个点的坐标可以存储在结构中。我试过下面的代码

 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平方。感谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您应该使用rand生成统一分发点  randn用于正常分布式点,这就是您获得负值的原因

将正态分布点的中心设置在100左右,您需要在结果中添加均值:

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