hasdata

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

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

Синтаксис

tf = sdi_ds.hasdata

Описание

tf = sdi_ds.hasdata возвращает логический 1 если matlab.io.datastore.sdidatastore, sdi_ds, имеет доступные для чтения данные. Когда sdi_ds не имеет доступных для чтения данных, hasdata возвращает 0.

Выходные аргументы

расширить все

Логическое указание на то, matlab.io.datastore.sdidatastore ли имеет доступные для чтения данные. Когда данные доступны, tf является 1. Когда данные недоступны, tf является 0.

Примеры

расширить все

A matlab.io.datastore.sdidatastore ссылается на данные о сигнале в репозитории Данные Моделирования Inspector. Когда сигнал слишком велик, чтобы помещаться в память, можно использовать matlab.io.datastore.sdidatastore пошагово обрабатывать данные вручную или создавать длинное расписание для сигнала, который обрабатывает пошаговую обработку для вас. В этом примере показано, как обработать данные с помощью matlab.io.datastore.sdidatastore.

Создайте matlab.io.datastore.sdidatastore для сигнала

Симулируйте sldemo_fuelsys модель, которая сконфигурирована для регистрации нескольких сигналов, для создания данных в репозитории Данные Моделирования Inspector.

sim('sldemo_fuelsys')

Используйте программный интерфейс Данные Моделирования Inspector, чтобы получить идентификатор сигнала.

runCount = Simulink.sdi.getRunCount;

latestRunID = Simulink.sdi.getRunIDByIndex(runCount);

latestRun = Simulink.sdi.getRun(latestRunID);

speedSigID = latestRun.getSignalIDByIndex(4);

Используйте идентификатор сигнала, чтобы создать matlab.io.datastore.sdidatastore для speed сигнал.

speedSDIds = matlab.io.datastore.sdidatastore(speedSigID);

Проверьте содержимое Datastore

Проверьте Name свойство matlab.io.datastore.sdidatastore чтобы убедиться, что это соответствует вашим ожиданиям.

speedSDIds.Name
ans = 
'map'

Можно также использовать preview метод для проверки того, что первые десять выборок в сигнале выглядят правильно.

speedSDIds.preview
ans=10×1 timetable
         Time          Data  
    ______________    _______

    0 sec               0.589
    0.00056199 sec    0.58772
    0.0033719 sec     0.58148
    0.01 sec          0.56765
    0.02 sec          0.54897
    0.03 sec          0.53264
    0.04 sec          0.51837
    0.05 sec          0.50594
    0.055328 sec          0.5
    0.055328 sec          0.5

Обработка данных сигнала с помощью matlab.io.datastore.sdidatastore

Когда ваш сигнал слишком велик, чтобы помещаться в память, можно использовать readData метод для чтения фрагментов данных из репозитория Данные Моделирования Inspector, чтобы пошагово обрабатывать ваши данные. Используйте hasdata способ как условие цикла while для пошаговой обработки всего сигнала. Для примера найдите максимальное значение сигналов.

latestMax = [];

while speedSDIds.hasdata
    
    speedChunk = speedSDIds.read;
    speedChunkData = speedChunk.Data;
    latestMax = max([speedChunkData; latestMax]);
    
end

latestMax
latestMax = 0.8897

На каждой операции чтения read метод обновляет положение чтения для начала следующей операции чтения. После чтения некоторых или всех matlab.io.datastore.sdidatastoreможно сбросить положение считывания, чтобы начать снова с начала сигнала.

speedSDIds.reset

Обработка данных сигнала в памяти

Когда сигнал, на который ссылается ваше matlab.io.datastore.sdidatastore помещается в память, можно использовать readall метод, чтобы считать все данные сигнала в память для обработки, а не считывать и обрабатывать данные постепенно с помощью read способ. The readall метод возвращает timetable со всеми данными о сигнале.

speedTimetable = speedSDIds.readall;

speedMax = max(speedTimetable.Data)
speedMax = 0.8897
Введенный в R2017b
Для просмотра документации необходимо авторизоваться на сайте