Класс: 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
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
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.