Класс: 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.