n维超球面中的随机点

时间:2018-01-05 16:06:49

标签: matlab math geometry

这个Matlab代码,

  

创建一组由笛卡尔坐标定义的随机点   均匀分布在n维的内部   半径为r的超球面,中心位于原点。

来源为here

clear all 
clc

m = 20000;
n = 2; 
r = 2; 

%// generate circle boundary
C = [3 4]; %// center [x y]
t = linspace(0, 2*pi, 100);
x = r*cos(t) + C(1);
y = r*sin(t) + C(2);

C_rep = repmat( C,m,1);
X = randn(m,n);
s2 = sum(X.^2,2);
X = X.*repmat(r*(rand(m,1).^(1/n))./sqrt(s2),1,n)+ C_rep; 

%% Plot
figure(1), clf 
plot(x,y,'b')
hold on
plot(C(1),C(2),'r.', 'MarkerSize', 50) % center point
hold on


plot(X(:,1),X(:,2),'g.','markersize',2); 
axis equal;zoom off; zoom on;drawnow;shg; 
ax = axis;

这是输出:

img

这不是我想要的。

  1. 如何使点分布在中心点 C

    n = 2, 3, 4, k维度

  2. s2的含义是什么?

0 个答案:

没有答案