hasdata

Класс: matlab.io.datastore.SimulationDatastore
Пакет: matlab.io.datastore

Определите, доступны ли данные для чтения

Синтаксис

tf = hasdata(dst)

Описание

tf = hasdata(dst) возвращает логический 1 TRUE) если существуют доступные данные, чтобы читать из datastore (matlab.io.datastore.SimulationDatastore объект) заданный dst. В противном случае это возвращает логический 0 ложь).

Входные параметры

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

Введите datastore в виде matlab.io.datastore.SimulationDatastore объект. Создать SimulationDatastore возразите, смотрите matlab.io.datastore.SimulationDatastore.

Примеры

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

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

Для просмотра документации необходимо авторизоваться на сайте