如何在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平方。感谢
答案 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')
这将导致类似以下内容:
答案 1 :(得分:0)
您应该使用rand
生成统一分发点
randn
用于正常分布式点,这就是您获得负值的原因
将正态分布点的中心设置在100左右,您需要在结果中添加均值:
S(i).x = randn*200 + 100;