1、R2空间,圆形区域的泊松点分布仿真
在矩形区域内的分布,之前的博文中已经有给出过
3D-PPP分布,2D-PPP分布的Matlab实现
这里给出一个在二维空间内,在圆形区域上产生PPP分布的一种算法。简单的,就是以极坐标的形式,随机产生角度和半径来分布的。参考文献内有5种算法,并不仅限于这一种。
如此,R3空间的内的分布也可想而知,改为球坐标系是一种简便的方式。
2、泊松簇过程
泊松簇过程分为父过程和子过程,简单的来说,父过程和子过程分别进行分布即可。下面的仿真给出的是,父过程为[0,100]*[0,100]区域上的PPP分布。子过程为以父点为中心,半径固定的圆区域内的PPP分布。代码如下:
%泊松簇过程仿真
%父过程
lambda = 10; % 密度
M = 0;
U = unifrnd(0,1);
while U >= exp(-lambda) %判定条件
U = U*unifrnd(0,1);
M=M+1;
end
if M < 1
M = 1;
end
L = 100;
a = 0;b = L; %取[0,100]*[0,100]*[0,100]的布点区域;
c = 0;d = L;
A = zeros(1,M);
B = zeros(1,M);
for i = 1:M
U1 = unifrnd(0,1);
A(i) = (b-a)*U1;
U2 = unifrnd(0,1);
B(i) = (d-c)*U2;
plot(A(i),B(i),'r^');
hold on;
end
grid on;
%子过程
for j=1:M
n = 50;
r = 8;
u1 = zeros(1,n);
u2 = zeros(1,n);
R = zeros(1,n);
x = zeros(1,n);
y = zeros(1,n);
theta = zeros(1,n);
for i = 1:n
u1(i) = unifrnd(0,1);
end
R = r * sqrt(u1);
R = sort(R);
for i = 1:n
u2(i) = unifrnd(0,1);
end
theta = 2*pi*u2;
for i = 1:n
x(i) = A(j) + R(i) * cos(theta(i));
y(i) = B(j) + R(i) * sin(theta(i));
end
plot(x,y,'.b');
end
axis([-10,110,-10,110]);
两次仿真的结果
以上对基于PPP的各类场景研究,蒙特卡洛仿真等实验,有一定意义。
参考文献
《Generating Homogeneous Poisson Processes - PDF》
《Stochastic Geometry for Wireless Networks》
《POISSON - A program for spatial point generation using Poisson processes》