Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何在球面上生成一个随机点?_Matlab_Geometry_Computational Geometry - Fatal编程技术网

Matlab 如何在球面上生成一个随机点?

Matlab 如何在球面上生成一个随机点?,matlab,geometry,computational-geometry,Matlab,Geometry,Computational Geometry,我正在处理R->6(6维),我有一个点X,其中: X=[0.00840.18710.10330.33320.31560.0524] 我有一个直径D,例如D=0.8 我想生成两个点X1和X2,其中球体中心和两个点之间的距离相同。如何实现这一点?要在n超球面上生成随机点(提供均匀分布),可以使用高斯分布生成n个随机变量,并对结果向量进行归一化。 伪代码: x1 = RandG() //don't know Matlab function x2 = RandG() .. x6 = RandG()

我正在处理
R->6
(6维),我有一个点X,其中:

X=[0.00840.18710.10330.33320.31560.0524]

我有一个直径
D
,例如
D=0.8


我想生成两个点
X1
X2
,其中球体中心和两个点之间的距离相同。如何实现这一点?

要在n超球面上生成随机点(提供均匀分布),可以使用高斯分布生成n个随机变量,并对结果向量进行归一化。
伪代码:

x1 = RandG()   //don't know Matlab function
x2 = RandG()
..
x6 = RandG()
norm = 0.5 * D / sqrt(x1^2 + ... + x6^2)
result = {Center} + {x1 * norm; ... ; x6 * norm}

X
是球体的中心吗?请明确说明这一点。您也没有提到是否需要这些随机点的概率密度函数均匀分布在球体上,或者任何分布是否合适。对于这两个点中的每一个,您可能需要采样(正如@CrisLuengo所问,从哪个分布?)范围内的五个数字
[0,D/2]
。因为你的球体将有一个f(X)=0类型的方程,你可以用这个方程计算点的第六个分量。我猜这将返回六种不同的解决方案,你可以从中随机选择一种。