exponenta event banner

Связывание информации об отслеживании со строками кода MATLAB в Simulink

Поддержка управления отслеживанием в редакторе MATLAB является расширением интерфейса управления требованиями на основе Simulink, позволяющим связывать строки кода MATLAB и внешние артефакты. Эта возможность не требует редактирования файлов MATLAB; все данные отслеживания хранятся отдельно. Это аналогично «внешнему» хранению ссылок RMI при работе с моделями Simulink, как в разделе Управление требованиями без изменения файлов модели Simulink.

Кроме того, используя режим «внешнего хранилища» для управления информацией об отслеживании, пользователи Simulink и Stateflow могут воспользоваться более высокой степенью детализации при связывании внешних документов с содержимым функциональных блоков MATLAB.

Включенная модель имеет данные отслеживания, связанные как с блоками Simulink, так и с отдельными строками кода функциональных блоков MATLAB.

Открыть пример модели

Этот пример демонстрирует связь между внешними документами и кодовыми линиями MATLAB при моделировании стимулированного пика в связанных нервных клетках.

Вычислите следующий код, чтобы открыть slvnvdemo_synaptic_transmission Модель Simulink в рабочей папке и задание предпочтения для обеспечения правильного обмена файлами в этом примере.

open('slvnvdemo_synaptic_transmission.slx');
rmipref('UnsecureHttpRequests',true);

Существует три блока Model, ссылающиеся на одну и ту же модель пикирующей нейронной клетки, которую можно увидеть в slvnvdemo_neuron.slx. Оцените код, чтобы открыть модель.

open('slvnvdemo_neuron.slx');

Модель нейронных клеток следует уравнению «Leaky Integrators»:

CmdVdt = Итотал-V-V0Rm

Cm,  Rm-емкость и сопротивление  клеточной мембраны

Итотал-включает впрыскиваемый  ток стимуляции и все   токи ионного канала

V0-resting межмембранный потенциал, как правило -70mV

Для целей моделирования это значение преобразуется в:

V→V0+∫0t1Cm (Itotal-V-V0Rm) дт

Две функции MATLAB между нейронами рассчитывают постсинаптические токи. Когда пресинаптическая деполяризация пересекает порог высвобождения нейромедиатора, мы увеличиваем постсинаптический ток на один импульс заданной амплитуды:

I→I+Iamplitude

Результирующий суммарный ток затухает экспоненциально в соответствии с:

dIdt = -I * t

Следующее приращение не допускается в течение определенного периода времени после предыдущего импульса для моделирования эффекта кратковременной синаптической депрессии. Модель игнорирует временную задержку аксональной передачи.

Моделирование модели и просмотр результатов

Вычислите следующий код для моделирования slvnvdemo_synaptic_transmission модель.

sim('slvnvdemo_synaptic_transmission');
### 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 28.191s

Проверьте вручную Scope блокировать результаты или вычислить следующий код.

open_system('slvnvdemo_synaptic_transmission/Scope');

Шесть участков:

  1. импульс электрического тока с внешним впрыском

  2. стимулированный инъекцией внутриклеточный скачок напряжения первого нейрона

  3. постсинаптический ток, генерируемый во втором нейроне

  4. синаптически стимулированная активность второго нейрона

  5. постсинаптический ток, генерируемый в третьем нейроне

  6. синаптически стимулированная активность третьего нейрона

Наблюдайте регулярные всплески нейрона вверх по течению (график 2) при подаче импульса стимуляции (график 1). Синаптически индуцированный ток в нисходящем нейроне (график 3) пропускает некоторые потенциалы действия восходящего нейрона из-за кратковременного истощения нейромедиатора, смоделированного как временный период отключения в Synaptic current функциональный блок. Вычислите код для перехода к Synaptic current блок.

rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Synaptic current');

Иногда видно, что нижестоящий нейрон интегрирует более одного синаптического входа для получения пика (график 4). Третий нейрон интегрирует синаптические входы второго нейрона (график 5) и шипы в более позднее время (график 6). При значениях параметров по умолчанию третий нейрон может всплескиваться 1 или более раз, в зависимости от намеренно введенного случайного шума в модели, посредством Noise current блок в slvnvdemo_neuron модель. Перейдите к 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 , существует несоответствующее значение параметра. Это легко обнаруживается с помощью связи отслеживания. Выделите строку 12 в synaptic_params.m сценарий, который читает V_syn_release = -2e-2; % -20 mV. Щелкните правой кнопкой мыши по выделенному фрагменту и в контекстном меню выберите «Требования > 1». Порог освобождения slvnvdemo_synaptic_transmission/Synaptic (константа). Это позволяет вернуться к модели Simulink и выделить блок, связанный с линией 12 в synaptic_params.m.

В Simulink перейдите на вкладку Приложения и откройте Диспетчер требований. Щелкните Подсветить связи (Highlight links) на вкладке Требования (Requirements), чтобы выделить только что созданные связи или оценить следующий код.

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 выберите имя переменной Syn_decay_time в нижней части окна synaptic_params.m сценарий. Оцените следующий код, чтобы открыть сценарий, если вы еще не сделали этого: open('synaptic_params').

Щелкните правой кнопкой мыши по выбранной строке и в контекстном меню выберите «Требования» > «Связать с выделением в Simulink». Проверьте новые линии связи путем перехода от MATLAB к Simulink и обратно к MATLAB.

Создание связи отслеживания для строк кода внутри функциональных блоков MATLAB

slvnvdemo_synaptic_transmission модель имеет функциональный блок MATLAB, который будет использоваться для трассировки источников значений параметров для Synaptic strength постоянный блок. В модели Simulink щелкните значок Synaptic strength блок константы, чтобы выбрать его для связывания, или вычислить следующий код, чтобы найти блок, а затем выбрать его.

rmidemo_callback('locate','slvnvdemo_synaptic_transmission/Synaptic strength');

Вместо связывания самого функционального блока MATLAB откройте код MATLAB этого блока и свяжите определенные строки. В slvnvdemo_synaptic_transmission модель, перейдите к Synaptic current блок и дважды щелкните его или вычислите следующий код.

rmidemo_callback('emlshow','slvnvdemo_synaptic_transmission/Synaptic current');

В редакторе MATLAB найдите появление I_amplitude в строке 33 кода блока функции MATLAB. Выделите линию курсором, чтобы выделить ее, а затем щелкните правой кнопкой мыши. Выберите в контекстном меню «Требования», затем выберите «Связать с выделением в Simulink».

Создание связи отслеживания между строками в коде MATLAB и Microsoft Word

До этого момента мы смотрели только на связь между MATLAB и Simulink. Откройте окно Ion current calculation MATLAB Функциональный блок, который принадлежит Sodium current calculation subsystem ссылочного slvnvdemo_neuron модель или вычислите следующий код: rmidemo_callback('emlshow','slvnvdemo_neuron/Sodium channel current/Ion current calculation').

Щелкните правой кнопкой мыши в редакторе MATLAB и выберите «Требования» > «Включить выделение требований» в контекстном меню, чтобы увидеть, какие строки кода имеют ссылки на требования.

Щелкните правой кнопкой мыши по выделенной строке кода, чтобы указать на наличие ссылки на требования. В контекстном меню «Требования» перейдите к нумерованной ссылке в верхней части меню. Связанный документ Word откроется для связанного текста. Также можно открыть документ Word и визуально идентифицировать ссылки, выполнив поиск объекта, похожего на значок MATLAB. Чтобы перейти к связанному коду, щелкните этот связанный объект, удерживая нажатой клавишу Ctrl.

Оцените следующий код, чтобы открыть документ Word: open('NeuralSpikeModeling.docx').

Создание аналогичной ссылки на Ion current calculation Функция в Potassium channel current subsystem, откройте документ Word и с помощью функции Find (Ctrl + F) найдите фразу «внешний ток ионов калия». Выделите эту фразу курсором в документе Word. Затем откройте Ion current calculation MATLAB Функциональный блок сверху или оцените следующий код: rmidemo_callback('emlshow','slvnvdemo_neuron/Potassium channel current/Ion current calculation').

В редакторе MATLAB выберите реализацию для подфункции outingCurrent (строки 34-37). Щелкните правой кнопкой мыши выбранные строки и в контекстном меню выберите «Требования» > «Связать с выделением в Word». Сверните документ Word, затем перейдите от вновь выделенных строк в нижней части кода MATLAB к соответствующему описанию в Word. При выделении правильного местоположения используйте значок MATLAB для возврата к коду.

Отчеты о связях отслеживания

Связи отслеживания, связанные со строками кода MATLAB функциональных блоков MATLAB, включаются в отчет отслеживания требований, созданный для родительской модели Simulink. На вкладке Требования (Requirements) щелкните Общий доступ (Share) > Создать отчет об отслеживании модели (Generate Model Traceability Report) в окне slvnvdemo_neuron Модель Simulink. Вычислите следующий код, чтобы открыть модель.

open('slvnvdemo_neuron.slx');

Следует отметить, что информация о связях функционального блока MATLAB присутствует в отчете, включая предложения связанных строк кода MATLAB.

Очистка

Следующие команды очищают рабочую область путем очистки всех объектов Simulink Requirements и закрытия всех моделей Simulink.

slreq.clear;
bdclose('all');