matlab.io.datastore. simulationdatastore.sdidatastore. чтение

Считайте фрагмент данных от sdidatastore

Синтаксис

данные = sdi_ds. чтение

Описание

data = sdi_ds.read читает фрагмент выборок от matlab.io.datastore.sdidatastore, sdi_ds, и обновляет положение чтения для sdi_ds к точке после конечной точки возвращенных данных. Выборки возвращены в timetable, data. Количество выборок, считанных методом read, отличается, и возвращенный timetable всегда вписывается в память. Используйте метод read, чтобы инкрементно обработать сигналы, которые являются слишком большими, чтобы вписаться в память.

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

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

Фрагмент выборок считан из matlab.io.datastore.simulationdatastore, возвращенного как timetable.

Примеры

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

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

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

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

sim('sldemo_fuelsys')

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

runCount = Simulink.sdi.getRunCount;

latestRunID = Simulink.sdi.getRunIDByIndex(runCount);

latestRun = Simulink.sdi.getRun(latestRunID);

speedSigID = latestRun.getSignalIDByIndex(4);

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

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

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

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

speedSDIds.Name
ans = 
'speed'

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

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

    0 sec             300 
    0.00056199 sec    300 
    0.0033719 sec     300 
    0.01 sec          300 
    0.02 sec          300 
    0.03 sec          300 
    0.04 sec          300 
    0.05 sec          300 
    0.055328 sec      300 
    0.055328 sec      300 

Данные сигнала процесса с matlab.io.datastore.sdidatastore

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

latestMax = [];

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

latestMax
latestMax = 300

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

speedSDIds.reset

Данные сигнала процесса в памяти

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

speedTimetable = speedSDIds.readall;

speedMax = max(speedTimetable.Data)
speedMax = 300

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

Можно использовать matlab.io.datastore.sdidatastore, чтобы создать длинное расписание, чтобы обработать сигналы, слишком большие, чтобы вписаться в память. Загрузка указателей длинного расписания и обработка фрагментов данных сигнала для вас. Страница с описанием matlab.io.datastore.sdidatastore включает пример, который показывает, как обработать ваши данные с помощью длинного расписания. Для получения дополнительной информации о работе с длинными расписаниями, смотрите Длинные массивы (MATLAB).

Смотрите также

Темы

Введенный в R2017b

Была ли эта тема полезной?