2015-08-03 4 views
3

Я хотел бы генерировать N точек в круге C центра (0,0) и радиуса R = 200. Точки следуют за распределением Пуассона. Другими словами, я хотел бы генерировать N однородный точечный процесс Пуассона (HPPP) внутри C.Как создать однородный процесс Пуассона в круге?

Я нашел эту статью Generating Homogeneous Poisson Processes. В разделе 2 есть именно то, что я хочу. В частности, в стр.4, Алгоритм 3 генерирует точки HPPP внутри С.

Я реализовал этот код в Python следующим образом:

""" Main Codes """  
import matplotlib.pyplot as plt 
import numpy as np 


lamb = 0.0005 # the rate 
pi = np.pi # pi = 3.14... 
r = 200 # the radius of the circle C 
mean = lamb * pi * r ** 2 # the mean of the Poisson random variable n 
n = np.random.poisson(mean) # the Poisson random variable (i.e., the number of points inside C) 
u_1 = np.random.uniform(0.0, 1.0, n) # generate n uniformly distributed points 
radii = np.zeros(n) # the radial coordinate of the points 
for i in range(n): 
    radii[i] = r * (np.sqrt(u_1[i])) 
u_2 = np.random.uniform(0.0, 1.0, n) # generate another n uniformly distributed points 
angle = np.zeros(n) # the angular coordinate of the points 
for i in range(n): 
    angle[i] = 2 * pi * u_2[i] 

""" Plots """ 
fig = plt.gcf() 
ax = fig.gca() 
plt.xlim(-300, 300) 
plt.ylim(-300, 300) 
circ = plt.Circle((0, 0), radius=200, color='r', linewidth=2, fill=False) 
plt.polar(angle, radii, 'bo') 
ax.add_artist(circ) 
plt.show() 

Во-первых, я не могу видеть точки внутри круга. Во-вторых, я не знаю, почему точки не генерируются внутри круга должным образом. Есть ли проблема в моем коде?

Выходной сигнал приведен ниже: Круг C находится в красном.

enter image description here

ответ

1

Я нашел ответ. Я просто преобразую полярные координаты в декартовы координаты, а затем я рисую с plt.plot() не с plt.polar().

# Cartesian Coordinates 
x = np.zeros(n) 
y = np.zeros(n) 
for i in range(n): 
    x[i] = radii[i] * np.cos(angle[i]) 
    y[i] = radii[i] * np.sin(angle[i]) 

plt.plot(x,y,'bo') 

Таким образом, я получаю желаемый результат.

enter image description here