В этом примере показано, как использовать журнал Simulink® Real-Time™ данных сигнала и Инспектора Данных моделирования. Сигналы регистрируются во время выполнения модели. В конце запуска интерфейс Simulation Data Inspector отображает сигнал. Этот пример показывает, как получить сигналы от интерфейса Simulation Data Inspectore при помощи командной строки.
Откройте модель slrt_ex_soc_dist
. Эта модель калибрует усилия по управлению посредством социального дистанцирования на вспышке инфекционного заболевания.
Откройте модель.
mdl = 'slrt_ex_soc_dist'; mdlOpen = 0; systems = find_system('type', 'block_diagram'); if all(~strcmp(mdl, systems)) mdlOpen = 1; open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_soc_dist.slx')); end
Создайте модель и загрузите на целевой компьютер:
Сконфигурируйте для немногословной сборки.
Сборка и приложение загрузки.
set_param(mdl,'RTWVerbose','off'); rtwbuild(mdl);
### Successful completion of build procedure for: slrt_ex_soc_dist ### Created MLDATX ..\slrt_ex_soc_dist.mldatx Build Summary Top model targets built: Model Action Rebuild Reason ================================================================================================= slrt_ex_soc_dist Code generated and compiled Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 1m 3.422s
Закройте модель, это открыто.
if (mdlOpen) bdclose(mdl); end
Используя переменную объекта Simulink Real-Time, tg
, загрузите и запустите модель и измените параметры модели.
tg = slrealtime; tg.load(mdl); tg.setparam('','soc_dist_level',1); tg.setparam('','thresh_int_level',1); tg.start; while ~strcmp(tg.status,'stopped') pause(5); end tg.stop;
Используя переменную объекта Simulink Real-Time, tg
, загрузите и запустите модель и измените параметры модели
tg = slrealtime; tg.load(mdl); tg.setparam('','soc_dist_level',0.2); tg.setparam('','thresh_int_level',0.2); tg.start; while ~strcmp(tg.status,'stopped') pause(5); end tg.stop;
Чтобы просмотреть нанесенные на график данные сигнала, откройте Инспектора Данных моделирования.
Simulink.sdi.view
Можно также получить данные сигнала из SDI и отобразить данные на графике при помощи этих команд.
Получите все запуски
Получите информацию запуска
Получите сигнал.
Получите объекты сигнала.
Примите только заразительные значения группы.
Постройте сигналы.
Результат показывает, что социальное дистанцирование может сократить количество госпитализированных людей
runIds = Simulink.sdi.getAllRunIDs(); for i = 1:length(runIds) run = Simulink.sdi.getRun(runIds(i)); signalID = run.getSignalIDsByName('hospitalized'); if ~isempty(signalID) signalObj = Simulink.sdi.getSignal(signalID); signalArray(:,i) = signalObj.Values(:,1).Data; timeValues = 100*(signalObj.Values(:,1).Time); plot(timeValues,signalArray); drawnow; end end grid on; xlabel('Time in days'); ylabel('hospitalized people');
SLRT Overload Options | slrtTETMonitor