В этом примере показано, как использовать журнал 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'); slbuild(mdl);
### Generated code for 'slrt_ex_soc_dist' is up to date because no structural, parameter or code replacement library changes were found. ### Successful completion of build procedure for: slrt_ex_soc_dist ### Created MLDATX ..\slrt_ex_soc_dist.mldatx Build Summary 0 of 1 models built (1 models already up to date) Build duration: 0h 0m 7.325s
Закройте модель, это открыто.
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