【问题标题】:How to generate random points inside sphere using MATLAB如何使用 MATLAB 在球体内生成随机点
【发布时间】:2018-03-31 00:19:53
【问题描述】:

我尝试通过以下代码使用以下以原点为中心的命令在球体内生成随机点

no_of_spots = 3000
radius=20
rvals = (2)*rand(no_of_spots,1)-(1);
elevation = asin(rvals);
azimuth = 2*pi*rand(no_of_spots,1);
radii = rand(no_of_spots,1)*radius;
[point_x,point_y,point_z] = sph2cart(azimuth,elevation,radii);

我的结果是

从图中可以看出,随机点集中在原点附近,即看起来像高斯分布。我需要均匀分布在球体内的随机点,或者需要将点的集中度从中心转移到另一个点。我该怎么做/谁能帮忙/ 提前致谢, 手动

【问题讨论】:

标签: matlab random distribution


【解决方案1】:

如果您从以下位置调整 radii 行:

radii = rand(no_of_spots,1)*radius;

收件人:

radii = (rand(no_of_spots,1).^(1/3))*radius;

你应该得到一个看起来更均匀的分布。

这就是 Knuth 在计算机编程的艺术中所描述的。卷。 2 并被引用here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多