MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何在8维球体上生成网络 (https://www.labfans.com/bbs/showthread.php?t=23710)

poster 2019-12-10 20:48

如何在8维球体上生成网络
 
使用Matlab,如何生成3 ^ 10个点的网络,这些点均匀分布(或分布)在8维单位球面上?



[B]回答:[/B]

来自维基百科[URL="http://en.wikipedia.org/wiki/N-sphere"]n-sphere[/URL]
[INDENT]为了在(n鈭1)球(即n球的表面)上生成均匀分布的随机点,Marsaglia(1972)给出了以下算法。

生成法线偏差的n维向量(使用N(0,1)就足够了,尽管事实上,方差的选择是任意的)\ mathbf {x} =(x_1,x_2,\ ldots,x_n)。

现在计算该点的“半径”,r = \ sqrt {x_1 ^ 2 + x_2 ^ 2 + \ cdots + x_n ^ 2}。

向量\ frac {1} {r} \ mathbf {x}均匀分布在单位n球的表面上。

[/INDENT]一个可以实现此目的的matlab代码片段是:

numdims = 8; numpts = 3^10; x = randn([numdims numpts]); lx = repmat(sqrt(sum(x.^2,1)), [numdims 1]); x = x./lx; %x(:,j) is the jth point on the circle)

[url=https://stackoverflow.com/questions/3278424]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 01:00

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.