Поддержка управления трассируемостью в редакторе 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":
В целях симуляции это преобразовано в:
Две функции MATLAB между нейронами вычисляют постсинаптические токи. Когда предсинаптическая деполяризация пересекает порог релиза нейромедиатора, мы постепенно увеличиваем постсинаптический ток одним импульсом данной амплитуды:
Получившиеся общие текущие затухания экспоненциально согласно:
Следующий шаг запрещен в течение определенного периода времени после предыдущего импульса, чтобы смоделировать эффект краткосрочной синаптической депрессии. Модель пропускает задержку аксональной передачи.
Оцените следующий код, чтобы симулировать 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');
Шесть графиков:
внешне введенный импульс электрического тока
стимулированное инжекцией внутриклеточное напряжение, пронзающее из первого нейрона
постсинаптический ток сгенерирован во втором нейроне
синаптическим образом стимулированное действие второго нейрона
постсинаптический ток сгенерирован в третьем нейроне
синаптическим образом стимулированное действие третьего нейрона
Наблюдайте регулярное пронзание восходящего нейрона (постройте 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');
Те же значения параметров присвоены для всех трех нейронов и обоих синапсов. Трассируемость, соединяющаяся, используется, чтобы выровнять по ширине значения параметров и реализацию.
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');
Оцените следующий код, чтобы убедиться, что двунаправленное соединение включено так, чтобы можно было создать двухсторонние ссылки трассируемости за один шаг.
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.
slvnvdemo_synaptic_transmission
модель имеет блок MATLAB function, что вы будете использовать трассировку для источников значения параметров к Synaptic strength
постоянный блок. В модели Simulink нажмите на Synaptic strength
постоянный блок, чтобы выбрать его для соединения или оценить следующий код, чтобы определить местоположение блока и затем выбрать его.
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 найдите вхождение I_amplitude на линии 33 из кода блока MATLAB function. Подсветите линию с курсором, чтобы выбрать его и затем щелкнуть правой кнопкой по нему. Выберите Requirements из контекстного меню, затем выберите Link to Selection in Simulink.
До этой точки мы только посмотрели на соединение между 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 и выберите 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 выберите реализацию для подфункции 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');