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

Этот пример показывает, как модели Simulink обрабатывают большие данные, как введено к и выводят от моделирования.

Откройте модель в качестве примера

Откройте модель в качестве примера.

Описание примера

Большие данные относятся к данным, который является слишком большим, чтобы загрузить в системную память целиком.

Simulink может произвести большие данные как моделирование вывод и использовать большие данные как входной параметр моделирования. Чтобы обработать большие данные для обоих вводов и выводов, целые данные хранятся в MAT-файле на жестком диске. Только маленькие фрагменты этого данные загружаются в системную память в любое время во время моделирования. Этот подход известен как потоковую передачу. Simulink может передать данные потоком к и из MAT-файла. Потоковая передача решает проблемы памяти, потому что мощность жесткого диска обычно намного больше, чем мощность оперативной памяти.

Этот пример показывает, как обработать большие данные в моделированиях Simulink. Журналирование, чтобы зарегистрировать возможность используется, чтобы передать большие данные потоком как вывод моделирования. Потоковая передача из файла затем снабжает большими данными, как введено к моделированию.

Настройте Журналирование к Файлу

К потоковым выходным данным к MAT-файлу позвольте регистрировать к файлу.

Позвольте регистрировать к файлу путем устанавливания ''Флажка настроек Configuration Parameters> Data Import/Export> Log Dataset data to file ''. Щелкните здесь, чтобы открыть Диалоговое окно Параметров конфигурации. Можно также задать имя файла, который будет содержать результат.

Программируемый способ позволить Регистрировать к файлу путем установки параметра модели LoggingToFile на on.

Когда журналирование к файлу включено на модели, моделировании тот, образцовые потоки регистрировали сигналы непосредственно в MAT-файл. Кроме того, если журналирование состояний или Вывода включено, и SaveFormat задан как Набор данных, те значения передаются потоком в то же самое MAT-файл.

Моделируйте модель

Этот пример изменяет директорию на временную директорию, которая имеет полномочия записи. Затем пример вызывает sim команду, чтобы моделировать модель, регистрируя к файлу.

Установите параметр SignalLoggingName, который задает имя объекта Dataset содержать результат журналирования сигнала к topOut. Установите параметр LoggingFileName, который задает имя получившегося MAT-файла к top.mat. Параметр StopTime устанавливается на 5 000 секунд. Для более реалистического большого примера данных время остановки было бы намного большим значением, которое приведет еще к многим выборкам данных, чтобы регистрировать.

Создайте объект DatasetRef сослаться на регистрируемый набор данных в MAT-файле

Используйте объект DatasetRef сослаться на получившийся Набор данных в регистрируемом MAT-файле. Преимущество использования DatasetRef - то, что MAT-файл, на который ссылаются, не загружается в память. DatasetRef является очень легким интерфейсным объектом для ссылки на Набор данных, который сохранен в файле. Альтернатива для вызывания функции load на этом файле загружает целый файл в память, которая не может быть возможной, если этот Набор данных содержит большие данные.

Получите ссылку на регистрируемый сигнал

Можно использовать {} индексацию объекта DatasetRef сослаться на отдельные сигналы в Наборе данных, не загружая эти сигналы в память. Например, чтобы сослаться на сигнал секунд:

Поле Values sig2 является объектом SimulationDatastore, который является легкой ссылкой на данные сигнала 2, сохраненного на диске:

ans = 

  SimulationDatastore with properties:

      ReadSize: 100
    NumSamples: 50001
      FileName: '/tmp/BR2018bd_921823_138171/publish_examples5/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 являются структурами объектов SimulationDatastore. Каждая структура отражает иерархию сигнала первоначальной шины.

Создайте новый объект набора данных использовать в качестве входного параметра моделирования

Задайте входные сигналы к моделированию через объект Dataset. Каждый элемент в этом Наборе данных предоставляет входные данные блоку импорта, соответствующему тому же индексу. Создайте пустой Набор данных ds и затем поместите ссылки на регистрируемые сигналы в него как элементы номер один и два.

Используйте {} индексирующий на объекте Dataset присвоить элементы в соответствующие положения.

В каждом элементе Набора данных можно смешать ссылки на данные сигнала (e. g., объект SimulationDatastore) с данными в оперативной памяти (e. g. Объекты временных рядов. Изменить одну из верхней насыщенности ограничивает от 30 до 37:

Данные потокового ввода в моделирование

Теперь моделируйте образцовый sldemo_mdlref_counter_bus, на который ссылаются и используйте Набор данных ds, как введено. Данные, на который ссылаются объекты SimulationDatastore, передаются потоком в моделирование без подавляющего система.

Данные для верхнего предела насыщенности не передаются потоком, потому что тот сигнал задан как timeseries в оперативной памяти. Изменение в пределе насыщенности отражается в приблизительно время 6 в осциллографе (сигнал теперь насыщает к значению 37 вместо 30).

Сводные данные

Этот пример продемонстрировал рабочий процесс цикла обработки больших данных от и до моделирования. Журналирование к персистентному устройству хранения данных использовалось к потоковым данным от первого моделирования в MAT-файл. Второе моделирование было затем установлено до потока данные из того файла, как введено. Более реалистический пример имел бы большее значение для образцового параметра StopTime, приводящего к большему регистрируемому MAT-файлу. Второе моделирование могло также быть сконфигурировано для более длинного StopTime. Однако даже с большими файлами данных для вывода и входного параметра, требования к памяти для более длительных моделирований остаются то же самое!

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

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

Доступ к данным во фрагментах

SimulationDatastore позволяет инкрементное чтение справочных данных. Чтение делает во фрагментах и управляет свойство ReadSize. Значение по умолчанию для ReadSize является 100 выборками (каждая выборка для сигнала является данными, регистрируемыми для единственного временного шага моделирования). Измените его на 1 000 для этого примера. Каждое чтение datastore возвращает представление расписания данных.

Сбросьте счетчик чтения SimulationDatastore

Каждое чтение на datastore совершенствует счетчик чтения. Можно сбросить этот счетчик и начать читать с начала:

Выполните итерации через все данные в Datastore

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

Выход

Закройте модель.

Связанная документация

Щелкните здесь для получения дополнительной информации о классе SimulationDatastore.

Была ли эта тема полезной?