readall

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

Чтение всех данных из sdidatastore

Синтаксис

data = sdi_ds.readall

Описание

data = sdi_ds.readall считывает все данные в matlab.io.datastore.sdidatastore, sdi_ds, в память, возвращая timetable, data. Использование readall только когда сигнал, на который ссылается matlab.io.datastore.sdidatastore помещается в память.

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

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

Все данные в matlab.io.datastore.sdidatastore, возвращается в timetable.

Примеры

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

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

Альтернативы

Когда ваши сигналы помещаются в память, можно использовать другие классы и функции программного интерфейса Данные Моделирования Inspector, например Simulink.sdi.Signal класс, для доступа и обработки данных моделирования.

Введенный в R2017b