求解多个相互影响的相等 ODE 系统

问题描述 投票:0回答:2

我正在使用 MATLAB ODE 套件来求解由 13 个微分方程组组成的系统,这些微分方程组决定了神经元的行为。现在我想添加第二个神经元,它由同一组微分方程运算,但受第一个神经元的影响。更重要的是,第二个神经元也会影响第一个神经元。 (这两个单元之间的前馈和反馈。)

我可以将微分方程分布在两个函数文件中,还是必须将它们复制到原始函数文件下方,以便同一文件中存在更长的方程列表?

我希望每个单元格都有一个文件,并以某种方式保持组织有序。另外,以防万一我可能想再次将其扩展到三个或四个神经元。

matlab ode differential-equations
2个回答
0
投票

您必须将所有变量的大向量拆分为每个神经元的变量的子数组,使用其变量调用每个文件,然后连接所得的方向向量。

如果神经元的行为类似,您应该考虑使用一种方法(文件),其中对于方向的神经元函数内部部分有一个循环,然后可能是对于交互项的双循环。将连接信息放入数据结构中,以便灵活更改。


0
投票

我对 MATLAB 的经验很少,但我在 MATLAB 中看到的一种方法是为每个需要存储的状态变量创建一个列表(一维矩阵?)。例如,实现 Hodgkin-Huxley 神经元需要一个用于门控变量“m”、“h”和“n”的矩阵,以及一个用于“V”的矩阵。每个列表的长度与模拟中神经元的数量一样长。然后使列表中的第 i 个位置对应于第 i 个神经元。

模拟流程如下所示(令 N 为神经元数量):

对于模拟中的每个时间步,

1)让'索引= 1'

2) 使用每个状态变量列表/矩阵中的第一个元素作为参数来调用文件中的 ODE 系统。

3) 索引加一。如果索引现在大于 N,则将时间步向前移动 1 并从 (1) 重新开始。

听起来您还需要矩阵来存储有关彼此影响的信息。虽然我知道很多人都这样做,但从更大的范围来看,这似乎很麻烦(特别是如果您将神经元与不同的 ODE 集合合并)。从长远来看,我强烈建议迁移到更加面向对象的方法。他们应该提供一种更简单的方法来“绑定”神经元的每个实例及其变量和方程,并且创建任意数量的神经元将不需要额外的代码。

http://www.mathworks.com/discovery/object-oriented-programming.html

© www.soinside.com 2019 - 2024. All rights reserved.