Класс: matlab.io.datastore.sdidatastore
Пакет: matlab.io.datastore
Определите, доступны ли данные для чтения
tf = sdi_ds.hasdata
возвращает логический tf
= sdi_ds.hasdata1
если matlab.io.datastore.sdidatastore
, sdi_ds
, имеет доступные данные, чтобы читать. Когда sdi_ds
не имеет доступных данных, чтобы читать, hasdata
возвращает 0
.
tf
— Индикация доступности данныхЛогическая индикация ли matlab.io.datastore.sdidatastore
имеет доступные данные, чтобы читать. Когда данные доступны, tf
1
. Когда данные не доступны, tf
0
.
matlab.io.datastore.sdidatastore
matlab.io.datastore.sdidatastore
данные сигнала ссылок в Инспекторе Данных моделирования репозиторий. Когда сигнал является слишком большим, чтобы поместиться в память, можно использовать matlab.io.datastore.sdidatastore
инкрементно обработать данные вручную или создать длинное расписание для сигнала, который обрабатывает инкрементную обработку для вас. В этом примере показано, как обработать данные с помощью matlab.io.datastore.sdidatastore
.
Создайте matlab.io.datastore.sdidatastore
для Сигнала
Симулируйте sldemo_fuelsys
модель, которая сконфигурирована, чтобы регистрировать несколько сигналов, создать данные в Инспекторе Данных моделирования репозиторий.
sim('sldemo_fuelsys')
Используйте Инспектора Данных моделирования программируемый интерфейс, чтобы получить 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 = 'map'
Можно также использовать preview
метод, чтобы проверять, что первые десять выборок в правильный взгляд сигнала.
speedSDIds.preview
ans=10×2 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
метод, чтобы считать фрагменты данных от Инспектора Данных моделирования репозиторий, чтобы инкрементно обработать ваши данные. Используйте hasdata
метод как условие некоторое время цикл, чтобы инкрементно обработать целый сигнал. Например, найдите максимальное значение сигналов.
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
метод. readall
метод возвращает timetable
со всеми данными сигнала.
speedTimetable = speedSDIds.readall; speedMax = max(speedTimetable.Data)
speedMax = 0.8897
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.