gpt4 book ai didi

python - 集成 ODE 后打印数组中的特定值

转载 作者:行者123 更新时间:2023-11-28 18:31:56 25 4
gpt4 key购买 nike

如果这是一个非常愚蠢/简单的问题,我深表歉意。我正在尝试使用 Python 在嘈杂的网络中模拟神经元,我希望计算神经元尖峰之间的时间(即尖峰间隔)。我的代码的相关部分如下(一位博士后帮助我编写了代码):

def dALLdt(X, t):
V, m, h, n = X
dVdt = (I_app(t)+I_syn(spks,t)-I_Na(V, m, h) - I_K(V, n) - I_L(V)) / C_m
dmdt = alpha_m(V)*(1.0-m) - beta_m(V)*m
dhdt = alpha_h(V)*(1.0-h) - beta_h(V)*h
dndt = alpha_n(V)*(1.0-n) - beta_n(V)*n
return np.array([dVdt, dmdt, dhdt, dndt])

X = [ic]
for i in t[1:]:
dx = dALLdt(X[-1],i)
x = X[-1]+dt*(dx)
X.append(x)

X = np.array(X)
V = X[:,0]
m = X[:,1]
h = X[:,2]
n = X[:,3]

当我使用标准“plt.plot(t, V, 'k')”从中创建图形时,我创建了以下图像:

enter image description here

我想做的,似乎不知道怎么做,是计算出神经元尖峰时 t 的值(当然尖峰本身有宽度,所以只要我在我如何测量它,宽度并不重要)。为了保持一致性,我想说神经元在 V 处于峰值时出现尖峰。我对如何做到这一点的想法基本上是说当 V 达到某个值(例如 30)时,让 python 打印它发生的时间(因为它会在每个尖峰发生两次,一次在上升的路上,一次在路上下来,然后我可以简单地将两者平均以获得近似的尖峰时间)。问题是我不知道如何真正告诉 Python 在 V 高于 30 时一直打印,并且无法找到任何示例代码来执行此操作。任何人都可以帮忙吗?谢谢你! :)

最佳答案

idx = np.argwhere(V > 30)[:,0] # get index of V where the value is > 30 and make it 1-d array t[idx] # the array of t where V > 30

从这个 ts 子集,您应该能够进行一些插值以找出峰值时间。

关于python - 集成 ODE 后打印数组中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36243695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com