我有2个问题。 (1)我需要求解微分方程,其中:
from time = [t0, t1, ...., tn]
for excitatory neurons = [u1, u2, ...., um]
for inhibitory neurons = [v1, v2, ...., vm]
其中,
所有u的初始值和v = numpy.zeros([m,2]) 对于第一个步骤,我需要求解所有u和v的微分方程du / dt = f(u,v)和dv / dt = g(u,v);将此响应作为下一个时间步的初始值,求解所有u和v的微分方程; ....直到最后一个步骤,初始值将是时间步骤tn-1的神经元响应(或微分方程的结果)。
我不确定如何在python中使用odeint。请澄清。
(2)我认为使用Brian可以更容易地实现(1),但我真的无法单独从其文档中理解Brian。 Brian有没有可用的教程?请指教。
在我发布问题之前,我被问到了我的尝试。根据我的要求,我尝试为每个时间步添加一个for循环,为每个神经元添加另一个for循环:
state = np.zeros([25, 2]) # one for excitatory and one for inhibitory
# neurons
for i in range(len(timeStep)):
for j in range(len(state)):
state[j] = odeint(derivativeFunc, state[j], timeStep[i])
这甚至没有进入我的求解器功能!然后我明白时间步骤必须是一个至少包含2个元素的数组!现在,如果我给出类似的,[timeStep [i],0]的时间步,我觉得这是非常愚蠢和奇怪的,我不知道从解算器响应中考虑哪个值,因为我得到[[0.0,0.0] ],[x,y]]其中x和y是浮点响应值。如果我考虑第一个值[0.0,0.0],那么响应总是0.0!如果我考虑第二个值[x,y],那么我确实得到一些响应,但我不确定我是否应该考虑这个,因为我的实际时间步长是时间步长数组中的第一个值而不是第二个值!
我完全困惑,真的需要帮助。我确信我不是第一个遇到这个问题的人因此,如果有人在python中找到了解决这个问题的方法(因为它已经在Matlab中存在),请帮助我(因为我真的不想要现在最后一刻在Matlab中重写我的整个实现,除非那是我唯一的选择!)。
真的,非常感谢,提前。
Esash