Объединенная информация о трассируемости с линиями кода MATLAB в Simulink

Поддержка управления трассируемостью в редакторе MATLAB является расширением основанного на Simulink Requirements Management Interface, чтобы разрешить ассоциации между линиями кода MATLAB и внешними артефактами. Эта возможность не требует файлов MATLAB редактирования; все данные о трассируемости хранятся отдельно. Это похоже на "внешнее" устройство хранения данных ссылок RMI при работе с моделями Simulink, как в Требованиях Управления, Не Изменяя Файлы Модели Simulink.

Кроме того, с помощью "внешнего устройства хранения данных" режим для получения информации о трассируемости управления, 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');

Нейронная модель ячейки следует за уравнением "Leaky Integrators":

CmdVdt=Itotal-V-V0Rm

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

Itotal-включает введенный стимуляция текущий и все ион канал токи

V0-отдых крест-мембрана потенциал, обычно -70 мВ

В целях симуляции это преобразовано в:

VV0+0t1Cm(Itotal-V-V0Rm)dt

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

II+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 31.756s

Вручную проверяйте 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');

Щелкните правой кнопкой по блоку и выберите Requirements> 1. "I_inj = 2e-11; % 20 Па", чтобы перейти по ссылке и просмотреть соответствующую подсвеченную область в файле кода 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. Щелкните правой кнопкой мыши по выбору и в контекстном меню, нажмите Requirements> 1. slvnvdemo_synaptic_transmission/Synaptic выпускают (Постоянный) порог. Это проводит по вам назад к модели Simulink и подсвечивает блок, который соединяется, чтобы выровнять 12 в synaptic_params.m.

В Simulink кликните по вкладке Apps и откройте менеджера по Требованиям. Щелкните по ссылкам Highlight во вкладке 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').

Щелкните правой кнопкой по выбранной линии и из контекстного меню, выберите Requirements> Link to Selection in Simulink. Протестируйте новые ссылки путем навигации от MATLAB до Simulink и назад к MATLAB.

Создайте ссылку трассируемости для линий кода в блоках MATLAB function

slvnvdemo_synaptic_transmission модель имеет блок MATLAB function, что вы будете использовать трассировку для источников значения параметров к Synaptic strength постоянный блок. В модели Simulink нажмите на Synaptic strength постоянный блок или оценивает следующий код, чтобы определить местоположение блока. Чтобы выбрать его для соединения, щелкните правой кнопкой по блоку и нажмите Requirements> Select for Linking with 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 найдите вхождение I_amplitude на линии 33 из кода блока MATLAB function. Подсветите линию с курсором, чтобы выбрать его и затем щелкнуть правой кнопкой по нему. Выберите Requirements из контекстного меню, затем выберите Link to Selection in Simulink.

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

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

Щелкните правой кнопкой по Редактору блока MATLAB function и выберите Requirements> Enable Requirements Highlighting из контекстного меню, чтобы видеть, какие строки кода имеют ссылки требований.

Щелкните правой кнопкой по строке кода, это было подсвечено, чтобы указать, что она имеет ссылку требований. Из контекстного меню Requirements перейдите к пронумерованной ссылке наверху меню. Связанный документ Word открывается к связанному тексту. Можно также открыть документ Word и визуально идентифицировать ссылки путем поиска объекта, похожего на значок MATLAB. Можно переместиться к соединенному коду Ctrl+clicking по этому связанному объекту.

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

Создать подобную ссылку на Ion current calculation Функция в Potassium channel current subsystem, откройте документ 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). Щелкните правой кнопкой по выбранным линиям и по контекстному меню, выберите Requirements> Link to Selection in Word. Минимизируйте документ Word, затем перейдите от недавно подсвеченных линий в нижней части кода MATLAB к связанному описанию в Word. Когда правильное местоположение будет подсвечено, используйте значок MATLAB, чтобы перейти назад к коду.

Сообщите о ссылках трассируемости

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

open('slvnvdemo_neuron.slx');

Обратите внимание на то, что информация о ссылках блока MATLAB function присутствует в отчете, включая цитаты соединенных линий кода MATLAB.

Очистка

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

slreq.clear;
bdclose('all');