我需要创建一个方法,使用随机数生成器在三维空间中生成一个随机方向的单位向量。该向量的方向分布必须是各向同性的。
以下是我正在尝试生成随机单位向量的方式:
v = randn(1,3);
v = v./sqrt(v*v');
但我不知道如何实现各向同性部分。有什么想法吗?
我需要创建一个方法,使用随机数生成器在三维空间中生成一个随机方向的单位向量。该向量的方向分布必须是各向同性的。
以下是我正在尝试生成随机单位向量的方式:
v = randn(1,3);
v = v./sqrt(v*v');
但我不知道如何实现各向同性部分。有什么想法吗?
你做得很好。随机的正态坐标分布给你一个方向上的均匀分布。
要在单位球面上生成10000个均匀分布的点,你可以运行:
v = randn(10000,3);
v = bsxfun(@rdivide,v,sqrt(sum(v.^2,2)));
plot3(v(:,1),v(:,2),v(:,3),'.')
axis equal
exp(- (x^2+y^2+z^2))
成比例。如果你将其转换为球坐标系,那么该表达式就变成了exp(-(r^2))
。换句话说,密度仅取决于半径而不是角度,这意味着点在所有角度上均匀分布。 - Jonas