【发布时间】:2014-08-29 16:30:51
【问题描述】:
我想在给定时间窗口内模拟具有指数内核的泊松过程的时间。我有以下代码,它有效但很糟糕。
# Attempt to simulate a Poisson process.
import random
import matplotlib.pyplot as plt
t = 0
rate = 5
timeinterval = 100
t = int(100*random.expovariate(rate))
times=[]
while (t < timeinterval):
times.append(t)
print t
t+= int(100*random.expovariate(rate))
print times
s = [0]*100
a=0.5
for i in xrange(len(s)):
s[i] = int(i-1 in times) + (1-a) * s[i-1]
plt.plot(s)
plt.show()
如何避免这段代码中的混乱?
例如,我乘以 100 并使用 int 来绘制数据。理想情况下我不会那样做。
在相关说明中,我希望时间间隔为 1 而不是 100(已经摆脱了代码的所有 *100 部分),但我看不到如何绘制结果。
【问题讨论】:
-
你为什么要绘制衰变图?您可以在特定时间 t 使用 vlines。那么也没有理由将时间转换为整数网格。
-
@user333700 我想可视化延迟。最终,我还将在图表中添加其他内容,看看它们如何与延迟相交。
-
如果您需要延迟,那么在时间点网格上工作是最简单的。但是,您可以使用任何规则间隔的网格来代替整数网格。例如,如果您将
times舍入到小数点后两位,那么您可以在单位间隔 0、0.01、...、1 内构建一个包含 100 个时间点的网格。
标签: python math matplotlib scipy statsmodels