exponenta event banner

Регистрация данных с помощью инспектора данных моделирования (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

Создайте модель и загрузите ее на целевой компьютер:

  • Настройка для построения, отличного от Verbose.

  • Создайте и загрузите приложение.

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');

См. также

|

Связанные темы