我正在尝试实现 Izhikevich 模型的尖峰神经元。这种神经元的公式非常简单:
v[n+1] = 0.04*v[n]^2 + 5*v[n] + 140 - u[n] + I
u[n+1] = a*(b*v[n] - u[n])
其中 v 是膜电位,u 是恢复变量。
如果v高于 30,则将其重置为c并且u重置为u + d。
鉴于这样一个简单的等式,我不希望有任何问题。但是,虽然图表应该看起来像,但我得到的只是:
我完全不知道自己做错了什么,因为几乎没有什么可做的。我一直在寻找其他实现,但我正在寻找的代码总是隐藏在某个 dll 中。但是我很确定我所做的正是作者 (2) 的 Matlab 代码正在做的事情。这是我的完整 R 代码:
v = -70
u = 0
a = 0.02
b = 0.2
c = -65
d = 6
history <- c()
for (i in 1:100) {
if (v >= 30) {
v = c
u = u + d
}
v = 0.04*v^2 + 5*v + 140 - u + 0
u=a*(b*v-u);
history <- c(history, v)
}
plot(history, type = "l")
对于曾经实施过 Izhikevich 模型的任何人,我错过了什么?
有用的链接:(1)http://www.opensourcebrain.org/projects/izhikevichmodel/wiki (2)http://www.izhikevich.org/publications/spikes.pdf
回答
所以事实证明我读错了公式。显然 v' 意味着新的 v = v + 0.04*v^2 + 5*v + 140 - u + I。我的老师会写成 v' = 0.04*v^2 + 6 *v + 140 - u + I . 我非常感谢您帮助我指出这一点。