Работа с большими данными для симуляций

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

  • Данные моделирования логгирования (логгирование сигналов, выход портов и логгирование состояний)

  • Загрузка входного сигнала данных для симуляции модели

  • Выполнение нескольких или параллельных симуляций

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

Рабочий процесс Больших данных

Этот пример является высокоуровневым рабочим процессом для обработки больших данных, которые производит одна симуляция и которые другая симуляция использует в качестве входов. Для получения дополнительной информации о основных задачах рабочего процесса смотрите:

Совет

Этот пример использует SimulationDatastore объект для потоковой передачи данных в модель. Также можно транслировать DatasetRef объект непосредственно в модель.

  1. Сконфигурируйте две модели, чтобы записать несколько сигналов.

  2. Симулируйте модели, регистрируя данные в постоянном хранилище для каждой модели.

    sim(mdl1,'LoggingToFile','on','LoggingFileName','data1.mat');
    sim(mdl2,'LoggingToFile','on','LoggingFileName','data2.mat');

    Логгирование, которое включает большие данные, требует сохранения данных в постоянном хранилище как MAT-файл версии 7.3. Только данные, зарегистрированные в Dataset формат сохраняется в файле. Данные, регистрируемые в других форматах, таких как Structure with time, сохраняется в памяти, в базовом рабочем пространстве.

    Данные, которые вы записываете в постоянное хранилище, передаются во время симуляции небольшими фрагментами, чтобы минимизировать требования к памяти. Данные хранятся в файле, который содержит Dataset объекты для каждого набора записанных данных (для примера, logsout и xout).

  3. Создание DatasetRef объекты (dsr1 и dsr2) для конкретных наборов записанных сигналов. Затем создайте SimulationDatastore объекты (dst1 и dst2) для значений элементов DatasetRef объекты. Этот пример кода создает SimulationDatastore для 12-го элемента logsout для первой симуляции. Для второй симуляции код примера создает сигнал со значениями SimulationDatastore объект для седьмого элемента logsout. Для индексации можно использовать фигурные скобки.

    dsr1 = Simulink.SimulationData.DatasetRef('data1.mat','logsout');
    dsr2 = Simulink.SimulationData.DatasetRef('data2.mat','logsout');
    dst1 = dsr1{12};
    dst2 = dsr2{7};
  4. Использование SimulationDatastore объекты как внешний вход для другой симуляции. Чтобы загрузить SimulationDatastore данные, включите его в Dataset объект. Вход datastore постепенно загружается из MAT-файла. Третий вход является timeseries объект, который загружается в память как единое целое, не постепенно.

    input = Simulink.SimulationData.Dataset;
    input{1} = dst1; 
    input{2} = dst2;
    ts = timeseries(rand(5,1),1,'Name','RandomSignals');
    input{3} = ts;
    sim(mdl3,'ExternalInput','input');
  5. Использование MATLAB® анализ больших данных для работы с SimulationDatastore объекты. Создайте timetable объект путем чтения значений SimulationDatastore объект. The read функция считывает фрагмент данных. The readall функция считывает все данные.

    tt = dst1.Values.read;
  6. Установите сеанс работы с MATLAB как глобальное окружение выполнения (mapreducer) для работы с высокими timetable. Создайте tall timetable из SimulationDatastore объект и чтение timetable объект с данными в памяти.

    mapreducer(0);
    ttt = tall(dst1.Values);
    

Совет

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

См. также

Функции

Похожие темы