Регистрация данных с Инспектором данных моделирования (SDI)

В этом примере показано, как использовать журнал 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');

Смотрите также

|

Похожие темы