Класс: matlab.io.datastore. SimulationDatastore
Пакет: matlab.io.datastore
Определите, доступны ли Данные в Чтение
tf = hasdata (dst)
возвращает логический tf = hasdata(dst)
1
(true
), если существуют доступные данные, чтобы читать из datastore (объект matlab.io.datastore.SimulationDatastore
) заданный dst
. В противном случае возвращается логический 0 (false).
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.