将可追溯性信息与 Simulink 中的 MATLAB 代码行关联
MATLAB 编辑器中的可追溯性管理支持是基于 Simulink® 的需求管理接口的扩展,允许 MATLAB® 代码行和外部工件之间的关联。此功能不需要编辑 MATLAB 文件;所有可追溯性数据都单独存储。这类似于使用 Simulink 模型时 RMI 链接的“外部”存储。
此外,使用“外部存储”模式管理可追溯性信息,Simulink 和 Stateflow® 用户在将外部文档与 MATLAB Function 模块的内容关联时可以获得更细粒度的益处。
所包含的示例模型具有与 Simulink 模块和 MATLAB Function 模块的各个代码行相关的可追溯性数据。
打开示例模型
此示例演示了在对连接的神经细胞中的刺激脉冲进行建模时外部文档和 MATLAB 代码行之间的链接。
评估以下代码以打开工作目录中的 slvnvdemo_synaptic_transmission
Simulink模型,并设置预设项以允许本示例中的文件进行正确通信。
open('slvnvdemo_synaptic_transmission.slx'); rmipref('UnsecureHttpRequests',true);
有三个 Model 模块引用相同的脉冲神经细胞模型,可以在 slvnvdemo_neuron.slx
中看到。评估代码以打开模型。
open('slvnvdemo_neuron.slx');
神经细胞模型遵循“泄漏积分器”方程:
为了仿真的目的,这被转换为:
神经元之间的两个 MATLAB 函数计算突触后电流。当突触前去极化超过神经递质释放阈值时,我们将突触后电流增加一个给定幅度的脉冲:
由此产生的总电流按下列公式指数衰减:
为模型短期突触抑制的影响,在前一个脉冲之后的一定时间范围内不允许出现下一个增量。该模型忽略了轴突传输的时间延迟。
仿真模型并查看结果
评估以下代码来仿真 slvnvdemo_synaptic_transmission
模型。
sim('slvnvdemo_synaptic_transmission');
### Searching for referenced models in model 'slvnvdemo_synaptic_transmission'. ### Found 1 model references to update. ### Starting serial model reference simulation build. ### Successfully updated the model reference simulation target for: slvnvdemo_neuron Build Summary Simulation targets built: Model Action Rebuild Reason ============================================================================================= slvnvdemo_neuron Code generated and compiled. slvnvdemo_neuron_msf.mexa64 does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 31.23s
手动检查 Scope
模块的结果或评估以下代码。
open_system('slvnvdemo_synaptic_transmission/Scope');
这六个图分别是:
外部注入电流脉冲
注射刺激第一个神经元的细胞内电压尖峰
第二个神经元产生的突触后电流
突触刺激第二个神经元的活动
第三个神经元产生的突触后电流
突触刺激第三个神经元的活动
在施加刺激脉冲(图 1)时,观测上游神经元的规律性放电(图 2)。下游神经元中突触诱导电流(图 3)跳过了上游神经元的一些动作电位,这是由于短期神经递质耗竭造成的,在 Synaptic current
函数模块中这被建模为暂时关闭期。评估代码以导航到Synaptic current
模块。
rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Synaptic current');
有时,下游神经元会整合多个突触输入来产生尖峰(图 4)。第三个神经元整合来自第二个神经元的突触输入(图 5),并在稍后的时间发出尖峰(图 6)。使用默认参数值时,第三个神经元可能会通过 slvnvdemo_neuron
模型中的 Noise current
模块出现 1 次或多次脉冲,具体取决于模型中有意引入的随机噪声。导航到 Noise
current
模块。
rmidemo_callback('locate','slvnvdemo_neuron/Noise current');
所有三个神经元和两个突触都分配了相同的参数值。可追溯性链接用于申述参数值和实施的合理性。
在 Simulink 和独立 MATLAB 文件之间导航
slvnvdemo_synaptic_transmission model
运行外部脚本 synaptic_params.m
将所需的参数值加载到工作区中。如果需要,通过评估以下代码来打开脚本:open('synaptic_params.m').
MATLAB 代码链接允许您从 Simulink 中的依赖模块跟踪,不仅可以跟踪到脚本文件,还可以跟踪到定义仿真中使用的值的特定行。
手动找到模型中的Stimulation pulse
模块或评估以下代码。
rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Stimulation pulse');
右键点击该模块并选择需求> 1。“I_inj = 2e-11; % 20 pA” 跟随链接并查看 MATLAB 代码文件中相关的突出显示区域,或评估以下内容:
open('synaptic_params.m');
% 如果需要,打开突触参数脚本
rmidemo_callback('view','slvnvdemo_synaptic_transmission/Stimulation pulse',1);
% 按照需求链接
请注意,在 synaptic_params.m
脚本中,有一个不匹配的参数值。这可以通过可追溯性链接轻松检测到。突出显示 synaptic_params.m
脚本中的第 12 行,其内容为 V_syn_release = -2e-2; % -20 mV
。右键点击选择,然后在上下文菜单中点击需求> 1. slvnvdemo_synaptic_transmission/突触释放阈值(恒定)。这将导航回 Simulink模型并突出显示链接到 synaptic_params.m
中第 12 行的模块。
在 Simulink 中,点击 App 选项卡并打开需求管理器。点击需求选项卡中的突出显示链接,突出显示您刚刚创建的链接,或者评估以下代码。
rmi('highlightModel', 'slvnvdemo_synaptic_transmission');
为 MATLAB 代码行创建可追溯性链接
评估以下代码以确保启用了双向链接,以便您可以在一个步骤中创建双向可追溯性链接。
rmipref('BiDirectionalLinking',true);
模型左下角的 Synaptic time constant
模块尚未链接到 synaptic_params.m
中的相关行。在 Simulink 模型中,选择Synaptic time constant
模块。如果找不到此模块,请评估以下代码,然后选择它。
rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Synaptic time constant');
然后,在 MATLAB 编辑器中,选择synaptic_params.m
脚本底部的变量名 Syn_decay_time。如果还没有,请执行以下代码来打开脚本:open('synaptic_params')
。
右键点击选定的行,然后从上下文菜单中选择需求>链接到 Simulink 中的选择。通过从 MATLAB 导航到 Simulink 并返回 MATLAB 来测试新链接。
为 MATLAB Function 模块内的代码行创建可追溯性链接
slvnvdemo_synaptic_transmission
模型有一个 MATLAB Function 模块,您将使用它来跟踪参数值源到 Synaptic strength
常量模块。在 Simulink模型中,点击Synaptic strength
常量模块或执行以下代码来定位该模块。要选择它进行链接,请右键点击该模块,然后点击需求 > 选择与 Simulink 进行链接。
rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Synaptic strength');
不要链接 MATLAB Function 模块本身,而是打开该模块的 MATLAB 代码并链接特定的行。在 slvnvdemo_synaptic_transmission
模型中,导航到 Synaptic current
模块并点击它,或者执行以下代码。
rmidemo_callback('emlshow','slvnvdemo_synaptic_transmission/Synaptic current');
在 MATLAB Function 模块编辑器中,在 MATLAB Function 模块模块第 33 行找到 I_amplitude 的出现。用光标突出显示该行以选择它,然后右键点击它。从上下文菜单中选择需求,然后选择链接到 Simulink 中的选择。
在 MATLAB 代码和 Microsoft Word 中的行之间创建可追溯性链接
到目前为止,我们只研究了 MATLAB 和 Simulink 之间的链接。打开属于引用的slvnvdemo_neuron
模型的Sodium current calculation subsystem
的Ion current calculation
MATLAB Function 模块,或者执行以下代码:rmidemo_callback('emlshow','slvnvdemo_neuron/Sodium channel current/Ion current calculation')
。
在 MATLAB Function 模块编辑器中点击鼠标右键,然后从上下文菜单中选择需求 > 启用需求突出显示,以查看哪些代码行具有需求链接。
右键点击突出显示的代码行,以指示其具有需求链接。从需求上下文菜单中,导航到菜单顶部的编号链接。关联的 Word 文档打开并显示关联的文本。您还可以打开 Word 文档,通过查找类似于 MATLAB 图标的对象来直观地识别链接。您可以通过 Ctrl+点击此链接对象导航到链接的代码。
执行以下代码打开 Word 文档:open('NeuralSpikeModeling.docx').
要创建与 Potassium channel current subsystem
中的 Ion current calculation
函数类似的链接,请打开 Word 文档并使用“查找”函数 (Ctrl+F) 查找短语“钾离子外流”。在 Word 文档中使用光标选择此短语。然后,从上面打开Ion current calculation
MATLAB Function 模块,或者执行以下代码:rmidemo_callback('emlshow','slvnvdemo_neuron/Potassium channel current/Ion current calculation')
。
在 MATLAB Function 模块编辑器中,选择 outwardCurrent 子函数的实现(第 34-37 行)。右键点击选定的行,然后在上下文菜单中选择需求>链接到 Word 中的选择。最小化 Word 文档,然后从 MATLAB 代码底部新突出显示的行导航到 Word 中的相关描述。当正确的位置突出显示时,使用 MATLAB 图标导航回代码。
报告可追溯性链接
与 MATLAB Function 模块 的 MATLAB 代码行相关的可追溯性链接包含在为父 Simulink模型生成的需求可追溯性报告中。在需求选项卡中,点击slvnvdemo_neuron
Simulink模型中的共享 > 生成模型可追溯性报告。执行以下代码来打开模型。
open('slvnvdemo_neuron.slx');
请注意,报告中存在 MATLAB Function 模块链接信息,包括链接的 MATLAB 代码行的引用。