Класс: matlab.io.datastore.SimulationDatastore
Пакет: matlab.io.datastore
Определите, доступны ли данные для чтения
tf = hasdata(dst)
tf = hasdata(
возвращает логический dst
)1
TRUE
) если существуют доступные данные, чтобы читать из datastore (matlab.io.datastore.SimulationDatastore
объект) заданный dst
. В противном случае это возвращает логический 0
ложь
).
dst
— Введите datastorematlab.io.datastore.SimulationDatastore
объектВведите datastore в виде matlab.io.datastore.SimulationDatastore
объект. Создать SimulationDatastore
возразите, смотрите matlab.io.datastore.SimulationDatastore
.
В этом примере показано, как регистрировать большие данные от симуляции и смотреть и анализировать фрагменты тех данных путем взаимодействия с matlab.io.datastore.SimulationDatastore
объект.
Регистрируйте Большие данные из модели
Откройте модель sldemo_fuelsys
в качестве примера.
open_system('sldemo_fuelsys')
Выберите Configuration Parameters> Data Import/Export> данные о Log Dataset к файлу.
set_param('sldemo_fuelsys','LoggingToFile','on')
Симулируйте модель.
sim('sldemo_fuelsys')
MAT-файл out.mat
появляется в вашей текущей папке. Файл содержит данные для регистрируемых сигналов, таких как fuel
(который является на корневом уровне модели).
В командной строке создайте DatasetRef
объект, который относится к переменной логгирования по наименованию, sldemo_fuelsys_output
.
DSRef = Simulink.SimulationData.DatasetRef('out.mat','sldemo_fuelsys_output');
Предварительный просмотр Большие данные
Используйте фигурные скобки ({
и }
) извлекать элемент сигнала fuel
, который является десятым элементом в DSRef
, как Simulink.SimulationData.Signal
объект, который содержит SimulationDatastore
объект.
SimDataSig = DSRef{10};
Более легко взаимодействовать с SimulationDatastore
объект, который находится в Values
свойство Signal
объект, сохраните указатель в переменной под названием DStore
.
DStore = SimDataSig.Values;
Используйте preview
метод, чтобы смотреть первые пять выборок записанных данных для fuel
сигнал.
preview(DStore)
ans = 10x1 timetable Time Data ______________ ______ 0 sec 1.209 0.00056199 sec 1.209 0.0033719 sec 1.209 0.01 sec 1.1729 0.02 sec 1.1409 0.03 sec 1.1124 0.04 sec 1.0873 0.05 sec 1.0652 0.055328 sec 1.0652 0.055328 sec 1.0652
Смотрите определенную выборку
Смотрите 603-ю выборку регистрируемого fuel
данные.
Установите ReadSize
свойство DStore
к номеру, что, рассматривая ресурсы памяти, ваш компьютер может терпеть. Например, установите ReadSize
к 200
.
DStore.ReadSize = 200;
Читайте из datastore три раза. Каждая операция чтения совершенствует положение чтения на 200 выборок.
read(DStore); read(DStore); read(DStore);
Теперь, когда вы - очень близко к 603-му демонстрационному, набору ReadSize
к меньшему числу. Например, установите ReadSize
к 5
.
DStore.ReadSize = 5;
Читайте из datastore снова.
read(DStore)
ans = 5x1 timetable Time Data ________ ______ 5.79 sec 1.6097 5.8 sec 1.6136 5.81 sec 1.6003 5.82 sec 1.5904 5.83 sec 1.5832
Третья выборка считанных данных является 603-й выборкой в datastore.
Смотрите более раннюю выборку
Смотрите 403-ю выборку регистрируемого fuel
данные. Из-за предыдущих операций чтения, datastore теперь читает запуск с 606-й выборки, таким образом, необходимо сбросить datastore. Затем можно читать из первой выборки до 403-й выборки.
Используйте reset
метод, чтобы сбросить DStore
.
reset(DStore);
Установите ReadSize
к 200
снова.
DStore.ReadSize = 200;
Читайте из datastore дважды, чтобы усовершенствовать положение чтения к 401-й выборке.
read(DStore); read(DStore);
Установите ReadSize
к 5
снова.
DStore.ReadSize = 5;
Читайте из datastore.
read(DStore)
ans = 5x1 timetable Time Data ________ _______ 3.85 sec 0.999 3.86 sec 0.99219 3.87 sec 0.98538 3.88 sec 0.97858 3.89 sec 0.97179
Извлеките несколько выборок
Извлеките выборки 1001 - 1020 (в общей сложности 20 выборок).
Сбросьте datastore.
reset(DStore)
Перейдите к демонстрационным 1001.
DStore.ReadSize = 200; for i = 1:5 read(DStore); end
Подготовьтесь извлекать 20 выборок из datastore.
DStore.ReadSize = 20;
Извлеките выборки 1001 - 1020. Храните извлеченные данные в переменной под названием targetSamples
.
targetSamples = read(DStore)
targetSamples = 20x1 timetable Time Data ________ ______ 9.7 sec 1.5828 9.71 sec 1.5733 9.72 sec 1.5664 9.73 sec 1.5614 9.74 sec 1.5579 9.75 sec 1.5553 9.76 sec 1.5703 9.77 sec 1.582 9.78 sec 1.5913 9.79 sec 1.5988 9.8 sec 1.605 9.81 sec 1.6101 9.82 sec 1.6145 9.83 sec 1.6184 9.84 sec 1.6049 9.85 sec 1.595 9.86 sec 1.5877 9.87 sec 1.5824 9.88 sec 1.5785 9.89 sec 1.5757
Найдите максимальное значение данных в Datastore
Сбросьте datastore.
reset(DStore)
Запишите while
цикл, с помощью hasdata
метод, чтобы инкрементно анализировать данные во фрагментах 200 выборок.
DStore.ReadSize = 200; runningMax = []; while hasdata(DStore) tt = read(DStore); rawChunk = tt.Data; runningMax = max([rawChunk; runningMax]); end
Теперь переменная runningMax
хранит максимальное значение в целом datastore.
runningMax
runningMax = 1.6423
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.