Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在8维球体上生成网络

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



回答:

来自维基百科n-sphere
为了在(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球的表面上。

一个可以实现此目的的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)

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 04:57


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