В этом примере показано, как модели Simulink обрабатывают большие данные как входные и выходные данные моделирования.
Большие данные относятся к данным, которые слишком велики для одновременной загрузки в системную память.
Simulink может создавать большие данные в качестве выходных данных моделирования и использовать большие данные в качестве входных данных моделирования. Для обработки больших данных как для ввода, так и для вывода все данные хранятся в MAT-файле на жестком диске. Во время моделирования в системную память загружаются только небольшие порции этих данных. Этот подход известен как потоковая передача. Simulink может передавать данные в MAT-файл и из него. Потоковая передача решает проблемы с памятью, поскольку емкость жесткого диска обычно намного больше емкости оперативной памяти.
В этом примере показано, как обрабатывать большие данные при моделировании Simulink. Функция регистрации в файле используется для потоковой передачи больших данных в качестве выходных данных моделирования. Затем потоковая передача из файла предоставляет большие данные в качестве входных данных для моделирования.
Для потоковой передачи выходных данных в MAT-файл включите ведение журнала в файл.
Включите ведение журнала для файла, выбрав опцию «Configuration Parameters > Data Import/Export > Log Dataset data to file». Можно также указать имя файла, который будет содержать результат.
Программный способ включения протоколирования в файл заключается в установке параметра модели. LoggingToFile кому on.
При включении регистрации в файле модели моделирование этой модели передает записанные сигналы непосредственно в MAT-файл. Кроме того, если включено ведение журнала состояний или выходных данных, а в качестве набора данных указано «» StartFormat «», эти значения передаются в тот же MAT-файл.
В этом примере каталог изменяется на временный каталог с разрешениями на запись. Затем пример вызывает sim-команду для моделирования модели, регистрируясь в файле.
Установите параметр SignalLoggingName, определяющий имя объекта Dataset, в котором хранится результат регистрации сигнала, равным topOut. Установка параметра LoggingFileName, который задает имя результирующего MAT-файла, top.mat. Параметр StopTime имеет значение 5000 секунд. Для более реалистичного примера больших данных время остановки будет гораздо большим значением, что приведет к увеличению количества выборок данных для регистрации. cd (tempdir);
### Starting serial model reference simulation build ### Successfully updated the model reference simulation target for: sldemo_mdlref_counter_bus Build Summary Simulation targets built: Model Action Rebuild Reason ============================================================================================================== sldemo_mdlref_counter_bus Code generated and compiled sldemo_mdlref_counter_bus_msf.mexa64 does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 16.4s
Используйте объект DatasetRef для ссылки на результирующий набор данных в протоколированном MAT-файле. Преимущество использования DatasetRef заключается в том, что связанный MAT-файл не загружается в память. DatasetRef - это очень легкий объект-обертка для ссылки на набор данных, который хранится в файле. Альтернатива вызова load функция в этом файле загружает весь файл в память, что может оказаться невозможным, если этот набор данных содержит большие данные.
Индексирование объекта DatasetRef можно использовать для ссылки на отдельные сигналы в наборе данных без загрузки этих сигналов в память. Например, для ссылки на секундный сигнал:
Поле Values (Значения) sig2 представляет собой объект TalkedDatastore, представляющий собой легкую ссылку на данные сигнала 2, хранящиеся на диске:
ans =
SimulationDatastore with properties:
ReadSize: 100
NumSamples: 50001
FileName: '/tmp/BR2021ad_1584584_202060/publish_examples6/tp1e9204a8/ex31145726/top.mat'
Data Preview:
Time Data
_______ ______
0 sec 1 5
0.1 sec 1 5
0.2 sec 2 6
0.3 sec 2 6
0.4 sec 3 7
: :
В этом примере некоторые из этих зарегистрированных сигналов используются в качестве входных данных для моделирования ссылочной модели. Создайте легковесные привязки для каждого из них. Это сигналы шины в модели, а результирующие поля Values являются структурами объектов TravingDatastore. Каждая структура отражает иерархию исходного сигнала шины.
Укажите входные сигналы для моделирования через объект Dataset. Каждый элемент в этом наборе данных предоставляет входные данные в блок ввода, соответствующий одному и тому же индексу. Создание пустого набора данных ds и затем поместить ссылки на записанные сигналы в него как элементы номер один и два.
Используйте индексирование объекта Dataset {} для назначения элементов в соответствующие позиции.
В каждом элементе набора данных можно смешивать ссылки на сигнальные данные (например, на объект TravingDatastore) с данными в памяти (например, на объекты временных рядов). Для изменения одного из верхних пределов насыщения с 30 до 37:
Теперь смоделировать ссылочную модель sldemo_mdlref_counter_busи используйте набор данных ds в качестве входных данных. Данные, на которые ссылаются объекты EgyptDatastore, передаются в поток в моделирование без переполнения системы.
Данные для верхнего предела насыщения не передаются в потоковом режиме, так как этот сигнал указан как временной интервал в памяти. Изменение предела насыщения отражается примерно в момент времени 6 в объеме (сигнал теперь насыщается до значения 37 вместо 30).

В этом примере продемонстрирован двухсторонний поток обработки больших данных от моделирования и до моделирования. Регистрация в постоянном хранилище использовалась для потоковой передачи данных из первого моделирования в MAT-файл. Затем было настроено второе моделирование для потоковой передачи данных из этого файла в качестве входных данных. Более реалистичный пример будет иметь большее значение для параметра StopTime модели, что приведет к увеличению протоколированного MAT-файла. Второе моделирование также может быть настроено для более длинного StopTime. Однако даже при больших файлах данных для вывода и ввода требования к памяти для более длительного моделирования остаются прежними!
SimulationDatastore позволяет Вам анализировать зарегистрированные данные с приращением в MATLAB. Возвращаясь к ссылке на второй зарегистрированный сигнал, назначьте хранилище данных новой переменной для упрощения доступа к нему.
SimulationDatastore позволяет возрастающее чтение справочных данных. Чтение выполняется порциями и управляется свойством ReadSize. Значение по умолчанию для ReadSize - 100 выборок (каждая выборка для сигнала - это данные, регистрируемые на одном этапе моделирования). В этом примере измените значение на 1000. Каждое считывание хранилища данных возвращает представление данных по расписанию.
Каждое считывание в хранилище данных продвигает счетчик считывания. Можно сбросить этот счетчик и начать чтение с самого начала:
Для инкрементного доступа к записанным расчетным данным для анализа больших данных в MATLAB используется хранилище данных. Можно выполнить итерацию по всей записи данных и частям: