exponenta event banner

Работа с большими данными

В этом примере показано, как модели 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 заключается в том, что связанный 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. Однако даже при больших файлах данных для вывода и ввода требования к памяти для более длительного моделирования остаются прежними!

Рабочий процесс MATLAB ®

SimulationDatastore позволяет Вам анализировать зарегистрированные данные с приращением в MATLAB. Возвращаясь к ссылке на второй зарегистрированный сигнал, назначьте хранилище данных новой переменной для упрощения доступа к нему.

Доступ к данным в блоках

SimulationDatastore позволяет возрастающее чтение справочных данных. Чтение выполняется порциями и управляется свойством ReadSize. Значение по умолчанию для ReadSize - 100 выборок (каждая выборка для сигнала - это данные, регистрируемые на одном этапе моделирования). В этом примере измените значение на 1000. Каждое считывание хранилища данных возвращает представление данных по расписанию.

Сбросить счетчик чтения хранилища данных

Каждое считывание в хранилище данных продвигает счетчик считывания. Можно сбросить этот счетчик и начать чтение с самого начала:

Итерация по всем данным в хранилище данных

Для инкрементного доступа к записанным расчетным данным для анализа больших данных в MATLAB используется хранилище данных. Можно выполнить итерацию по всей записи данных и частям:

См. также

Классы

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