作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
作为更大模型的一部分,我需要几行代码来为我实现 Paralazable 系统模型。
整个模型都在探测器上。该检测器可以根据到达的元素记录信号。探测器效率低下,在一种元素撞击它后,它可能会在一段时间内失去灵敏度。
在 Paralyzable 模型中,当一个元素撞击它时,探测器将停止运行,即使它没有检测到它。这意味着我们作为死区时间的某个数字可能会发生变化,如果另一个元素在那段时间内撞击探测器,它会增加另一个死区时间。
有这个链接,您可以阅读更多关于这个主题的内容: Dead time
我使用 numpy 制作了一个随机泊松样本,它可能具有与源相同的行为(源正在根据泊松分布制作元素),然后由于检测器只能检测一个元素有一次,我们需要用一个替换所有多个值。
那么最后一步才是真正应用Paralzable dead time effect的主要部分,它会移除检测值的dead time距离值。
import numpy as np
np.random.seed(2)
random_set = np.random.poisson(lam=1, size = 500) #The source is making the elements with Poisson distribution
#lam could be any other value
d = 2 #dead time, could be any other integers
#Saturation effect
#detector could not detect more than one elements at a time
random_set[random_set>1] = 1
index = 1
#Paralyzable dead time effect
for i in range(1, (random_set.shape[0])):
for j in range(index, index + d+1):
if random_set[j]==1:
index = j
random_set[j]=0
它不会出现任何错误,但它肯定不是在做我正在寻找的事情。有没有快速的方法让它发挥作用?
谢谢。
最佳答案
我想出了这个非常简单的方法来解决这个问题,死时间必须从元素撞击检测器的位置开始计算,这意味着如果死时间必须阻塞 2 个 channel ,第一个实际上是元素在其中接收的那个。
在这里,我只是制作了另一个向量,它基本上使用了来自 numpy 的向量,并使与主向量的 d 距离等于零,然后将它们相乘,最终会给出位置上的 1在阻塞位置必须为零。
import numpy as np
np.random.seed(2)
random_set = np.random.poisson(lam=1, size = 20) #The source is making the elements with Poisson distribution
#lam could be any other value
d = 3 #dead time, could be any other integers
#Saturation effect
#detector could not detect more than one elements at a time
random_set[random_set>1] = 1
print(random_set)
new_vec = np.ones(random_set.shape)
for i in range(random_set.shape[0]):
if random_set[i]==1:
new_vec[i+1:i+d]=0
result = new_vec*random_set
print(result)
关于python - python 中的可瘫痪系统模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50593079/
我是一名优秀的程序员,十分优秀!