matlab.io.datastore.SimulationDatastore class

Пакет: matlab.io.datastore

Datastore для вводов и выводов моделей Simulink

Описание

matlab.io.datastore.SimulationDatastore объект позволяет модели Simulink® взаимодействовать с большими данными. Можно загрузить большие данные как вход симуляции и регистрировать большие выходные данные от симуляции. Чтобы симулировать модели с большими данными, вы храните данные в MAT-файле и обращаетесь к данным через SimulationDatastore объект. Смотрите работу с Большими данными для Симуляций.

SimulationDatastore объект относится к большим данным моделирования (который MAT-файл хранит) для одного сигнала. Если MAT-файл хранит данные моделирования для сигнала шины, SimulationDatastore объект относится к данным для одного листового элемента сигнала в шине. Можно использовать объект datastore смотреть и получить доступ к данным и через родительский объект, такой как Simulink.SimulationData.Signal, симулируйте модель Simulink с данными.

Чтобы анализировать данные о datastore, можно использовать методы и свойства SimulationDatastore объект, а также инструменты MATLAB®, такие как tall функция. Для получения дополнительной информации о средствах MATLAB, смотрите Начало работы с Datastore (MATLAB).

Конструкция

После того, как вы храните большие данные моделирования в Simulink.SimulationData.Dataset объект в MAT-файле, элемент сигнала в Dataset возразите указывает на большие данные. Создать matlab.io.datastore.SimulationDatastore объект, который относится к большим данным:

  1. В командной строке или в скрипте, создайте Simulink.SimulationData.DatasetRef объект, который относится к Dataset объект в MAT-файле.

  2. Используйте один из этих методов:

    • Используйте на основе один, индексация курчавой фигурной скобки (например, {1}) возвратить объект, который представляет целевой элемент сигнала, такой как Simulink.SimulationData.Signal или Simulink.SimulationData.State. Например, для DatasetRef возразите названному logsout_ref, создать Signal объект, который обращается к второму элементу сигнала, использует этот код:

      myLoggedSig = logsout_ref{2}

    • Используйте getAsDatastore метод DatasetRef возразите, чтобы возвратить объект, который представляет целевой элемент сигнала. Для получения дополнительной информации смотрите getAsDatastore.

SimulationDatastore объект находится в Values свойство возвращенного объекта.

Свойства

развернуть все

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

Типы данных: char

Общее количество выборок (временные шаги) в datastore, возвращенном как целое число. readall метод извлекает это много выборок из больших данных. Это свойство доступно только для чтения.

Типы данных: uint64

Объем данных, чтобы читать за один раз, в количестве выборок (временные шаги) в виде скаляра дважды. read метод извлекает это много выборок из больших данных.

Типы данных: double

Методы

hasdataОпределите, доступны ли данные для чтения
isPartitionableОпределите, partitionable ли datastore
isShuffleableОпределите, shuffleable ли datastore
предварительный просмотрВозвратите подмножество данных из datastore
прогрессВозвратите процент данных, которые вы считали из datastore
чтениеСчитайте данные в datastore
readallСчитывайте все данные в datastore
сбросСброс Datastore к начальному состоянию

Копировать семантику

Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Ограничения

  • SimulationDatastore не поддерживает использование параллельного пула с установленным Parallel Computing Toolbox™. Чтобы анализировать данные с помощью длинных массивов или алгоритмов MapReduce запуска, установите глобальную среду выполнения быть локальным сеансом работы с MATLAB с помощью mapreducer. Введите этот код:

    mapreducer(0)
    Для получения информации об управлении параллельными ресурсами см. mapreduce Запуска на Параллельном Пуле (Parallel Computing Toolbox).

  • Вы не можете использовать MATLAB высокая переменная в качестве входных данных симуляции.

Примеры

свернуть все

В этом примере показано, как регистрировать большие данные от симуляции и смотреть и анализировать фрагменты тех данных путем взаимодействия с matlab.io.datastore.SimulationDatastore объект.

Регистрируйте Большие данные из модели

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

open_system('sldemo_fuelsys')

Выберите Configuration Parameters> Data Import/Export> данные о Log Dataset к файлу.

set_param('sldemo_fuelsys','LoggingToFile','on')

Симулируйте модель.

sim('sldemo_fuelsys')

MAT-файл out.mat появляется в вашей текущей папке. Файл содержит данные для регистрируемых сигналов, таких как fuel (который является на корневом уровне модели).

В командной строке создайте DatasetRef объект, который относится к переменной логгирования по наименованию, sldemo_fuelsys_output.

DSRef = Simulink.SimulationData.DatasetRef('out.mat','sldemo_fuelsys_output');

Предварительный просмотр Большие данные

Используйте фигурные скобки ({ и }) извлекать элемент сигнала fuel, который является десятым элементом в DSRef, как Simulink.SimulationData.Signal объект, который содержит SimulationDatastore объект.

SimDataSig = DSRef{10};

Более легко взаимодействовать с SimulationDatastore объект, который находится в Values свойство Signal объект, сохраните указатель в переменной под названием DStore.

DStore = SimDataSig.Values;

Используйте preview метод, чтобы смотреть первые пять выборок записанных данных для fuel сигнал.

preview(DStore)
ans =

  10x1 timetable

         Time          Data 
    ______________    ______

    0 sec              1.209
    0.00056199 sec     1.209
    0.0033719 sec      1.209
    0.01 sec          1.1729
    0.02 sec          1.1409
    0.03 sec          1.1124
    0.04 sec          1.0873
    0.05 sec          1.0652
    0.055328 sec      1.0652
    0.055328 sec      1.0652

Смотрите определенную выборку

Смотрите 603-ю выборку регистрируемого fuel данные.

Установите ReadSize свойство DStore к номеру, что, рассматривая ресурсы памяти, ваш компьютер может терпеть. Например, установите ReadSize к 200.

DStore.ReadSize = 200;

Читайте из datastore три раза. Каждая операция чтения совершенствует положение чтения на 200 выборок.

read(DStore);
read(DStore);
read(DStore);

Теперь, когда вы - очень близко к 603-му демонстрационному, набору ReadSize к меньшему числу. Например, установите ReadSize к 5.

DStore.ReadSize = 5;

Читайте из datastore снова.

read(DStore)
ans =

  5x1 timetable

      Time       Data 
    ________    ______

    5.79 sec    1.6097
    5.8 sec     1.6136
    5.81 sec    1.6003
    5.82 sec    1.5904
    5.83 sec    1.5832

Третья выборка считанных данных является 603-й выборкой в datastore.

Смотрите более раннюю выборку

Смотрите 403-ю выборку регистрируемого fuel данные. Из-за предыдущих операций чтения, datastore теперь читает запуск с 606-й выборки, таким образом, необходимо сбросить datastore. Затем можно читать из первой выборки до 403-й выборки.

Используйте reset метод, чтобы сбросить DStore.

reset(DStore);

Установите ReadSize к 200 снова.

DStore.ReadSize = 200;

Читайте из datastore дважды, чтобы усовершенствовать положение чтения к 401-й выборке.

read(DStore);
read(DStore);

Установите ReadSize к 5 снова.

DStore.ReadSize = 5;

Читайте из datastore.

read(DStore)
ans =

  5x1 timetable

      Time       Data  
    ________    _______

    3.85 sec      0.999
    3.86 sec    0.99219
    3.87 sec    0.98538
    3.88 sec    0.97858
    3.89 sec    0.97179

Извлеките несколько выборок

Извлеките выборки 1001 - 1020 (в общей сложности 20 выборок).

Сбросьте datastore.

reset(DStore)

Перейдите к демонстрационным 1001.

DStore.ReadSize = 200;

for i = 1:5
    read(DStore);
end

Подготовьтесь извлекать 20 выборок из datastore.

DStore.ReadSize = 20;

Извлеките выборки 1001 - 1020. Храните извлеченные данные в переменной под названием targetSamples.

targetSamples = read(DStore)
targetSamples =

  20x1 timetable

      Time       Data 
    ________    ______

    9.7 sec     1.5828
    9.71 sec    1.5733
    9.72 sec    1.5664
    9.73 sec    1.5614
    9.74 sec    1.5579
    9.75 sec    1.5553
    9.76 sec    1.5703
    9.77 sec     1.582
    9.78 sec    1.5913
    9.79 sec    1.5988
    9.8 sec      1.605
    9.81 sec    1.6101
    9.82 sec    1.6145
    9.83 sec    1.6184
    9.84 sec    1.6049
    9.85 sec     1.595
    9.86 sec    1.5877
    9.87 sec    1.5824
    9.88 sec    1.5785
    9.89 sec    1.5757

Найдите максимальное значение данных в Datastore

Сбросьте datastore.

reset(DStore)

Запишите while цикл, с помощью hasdata метод, чтобы инкрементно анализировать данные во фрагментах 200 выборок.

DStore.ReadSize = 200;
runningMax = [];
while hasdata(DStore)
    tt = read(DStore);
    rawChunk = tt.Data;
    runningMax = max([rawChunk; runningMax]);
end

Теперь переменная runningMax хранит максимальное значение в целом datastore.

runningMax
runningMax =

    1.6423

Введенный в R2017a