hasdata

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

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

Синтаксис

tf = hasdata(dst)

Описание

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

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

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

Введите 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

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