如何在N×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),我想要为一个200x200平方存储在0-200之间的正态分布点。谢谢
发布于 2016-07-15 14:06:08
以下内容将需要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')这样做的结果如下:

发布于 2016-07-14 18:34:48
您应该使用rand生成均匀分布的点。
randn用于正态分布点,这就是为什么得到负值的原因。
要将正态分布点集中在100个左右,需要将平均值添加到结果中:
S(i).x = randn*200 + 100;https://stackoverflow.com/questions/38381572
复制相似问题