Симуляция моделей с множеством временных шагов и сигналов может использовать и создавать данные, которые являются слишком большими, чтобы помещаться в рабочую память на вашем компьютере. Когда ваши входные данные симуляции не помещаются в память, можно выбрать одну из нескольких стратегий, чтобы использовать эти данные в качестве входов симуляции с блоками Inport корневого уровня. Эти стратегии работают для загрузки данных, хранящихся в Dataset формат в MAT-файле версии 7.3, включая данные, записанные из другой симуляции.
Когда отдельные входные сигналы слишком велики, чтобы помещаться в память, можно использовать matlab.io.datastore.SimulationDatastore объект для доступа к данным сигнала. Данные из SimulationDatastore объект загружается в симуляцию постепенно в фрагментах, которые помещаются в памяти.
Когда ваши входы симуляции заданы Simulink.SimulationData.Dataset объект в файле, который слишком велик для загрузки в память, можно транслировать все содержимое Dataset объект в модель с помощью Simulink.SimulationData.DatasetRef объект.
Когда сигналы помещаются в память и хранятся в файле, который слишком велик для загрузки в память, можно загрузить отдельные сигналы из файла в память с помощью Simulink.SimulationData.DatasetRef объект.
Примечание
Когда вы хотите использовать данные, зарегистрированные в одной симуляции, в качестве входных данных для другой, вы также можете транслировать данные в модель с помощью matlab.io.datastore.sdidatastore объект. The sdidatastore объект ссылается на данные в репозитории Данные Моделирования Inspector на диске, поэтому вы не должны сохранять записанные данные в файл. Рассмотрите использование sdidatastore объект как вход симуляции для итерационных рабочих процессов.
Все стратегии загрузки больших данных предназначены для особого случая, когда ваши данные не помещаются в память и могут потребовать дополнительных шагов. Эти примеры используют данные, которые полностью помещаются в память, чтобы проиллюстрировать шаги, необходимые для загрузки больших данных. Когда ваши входы симуляции помещаются в память, рассмотрите использование других методов загрузки.
SimulationDatastore ОбъектыКогда отдельные сигналы в ваших входных данных слишком велики, чтобы помещаться в память, можно создать matlab.io.datastore.SimulationDatastore объекты для этих сигналов и поток их в вашу модель. Как создать SimulationDatastore объект для сигнала, который вы хотите передать в модель, сначала создайте Simulink.SimulationData.DatasetRef объект для ссылки на Dataset объект, который содержит ваш интересующий сигнал. Для примера создайте DatasetRef для записанных данных из симуляции slexAircraftExample модель.
logsout_DSR = Simulink.SimulationData.DatasetRef('aircraftData.mat','logsout');
Можно создать SimulationDatastore объект для вашего желаемого сигнала путем индексации в DatasetRef объект с фигурными скобками или использование getAsDatastore метод для DatasetRef объект. В обоих случаях SimulationDatastore объект существует в Values свойство возвращенного Simulink.SimulationData.Signal объект.
Когда вы знаете индекс сигнала в Dataset объект, можно индексировать в DatasetRef объект с фигурными скобками для создания SimulationDatastore для вашего сигнала.
alphaRad_ds = logsout_DSR{4}alphaRad_ds =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'alpha, rad'
PropagatedName: ''
BlockPath: [1x1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 4
Values: [1x1 matlab.io.datastore.SimulationDatastore]
Methods, Superclasses
Как создать SimulationDatastore объект для сигнала, использующего индекс сигнала, имя или путь блока, используйте getAsDatastore способ. Для примера создайте SimulationDatastore объект для Stick сигнал.
stick_ds = logsout_DSR.getAsDatastore('Stick')stick_ds =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'Stick'
PropagatedName: ''
BlockPath: [1x1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [1x1 matlab.io.datastore.SimulationDatastore]
Methods, Superclasses
Потому что Values свойства stick_ds и alphaRad_ds Simulink.SimulationData.Signal объекты SimulationDatastores, сигнальные данные поступают в вашу модель. Можно включать SimulationDatastore поддерживаемые Signal объект как элемент в Dataset объект или как элемент в Input разделенный запятыми список параметров.
Dataset Использование DatasetRef ОбъектКогда ваши входы симуляции заданы в Dataset в файле, который слишком велик для загрузки в память, можно создать Simulink.SimulationData.DatasetRef объект, чтобы передать входные входы симуляции в модель. Когда вы задаете DatasetRef объект для параметра Input на панели Data Import/Export, все сигналы в Dataset объект, используемый для создания DatasetRef поток в вашу модель. Используйте один из других методов загрузки больших данных для загрузки или потоковой передачи отдельных сигналов от Dataset объект.
Когда файл, где ваша симуляция Dataset хранится содержит другие Datasets и данных, вы можете использовать Simulink.SimulationData.DatasetRef.getDatasetVariableNames функция для просмотра списка Dataset объекты, содержащиеся в файле. Предварительный просмотр имен переменных в Dataset объект особенно полезен, когда содержимое файла не помещается в память.
datasetNames = Simulink.SimulationData.DatasetRef.getDatasetVariableNames('aircraftData.mat')datasetNames = 1x3 cell
{'logsout'} {'xout'} {'yout'}
Создайте DatasetRef объект для logsout.
logsout_DSR = Simulink.SimulationData.DatasetRef('aircraftData.mat','logsout');
Можно загрузить logsout_DSR использование Input параметр так же, как вы загрузили бы Simulink.SimulationData.Dataset объект. Каждый сигнал в Dataset объект, используемый для создания DatasetRef потоки в модель в фрагментах, которые помещаются в памяти.
DatasetRef ОбъектКогда ваши входные сигналы симуляции индивидуально помещаются в память и сохраняются в Dataset объект в файле, который не помещается в память, используйте Simulink.SimulationData.DatasetRef объект для загрузки каждого интересующего сигнала в память. Затем можно загрузить сигналы как входные параметры симуляции для вашей модели.
Во-первых, создайте DatasetRef объект для ссылки на Dataset объект в файле, который содержит сигналы, которые вы хотите загрузить. Для примера создайте DatasetRef объект для данных, записанных в файл из симуляции slexAircraftExample модель.
logsout_DSR = Simulink.SimulationData.DatasetRef('aircraftData.mat','logsout');
Можно использовать get или getElement методы для загрузки отдельных сигналов в память с DatasetRef объект. Оба метода загружают указанный элемент в память, используя один и тот же синтаксис. Можно задать сигнал, который вы хотите загрузить в память, используя его индекс в Dataset объект или его имя. Если вы не знаете имя сигнала, который вы хотите загрузить, используйте getElementNames метод для просмотра имен элементов в Dataset объект, на который ссылается DatasetRef объект.
elNames = logsout_DSR.getElementNames
elNames = 15x1 cell
{0x0 char }
{0x0 char }
{0x0 char }
{'alpha, rad'}
{'q, rad/sec'}
{0x0 char }
{'qGust' }
{'wGust' }
{0x0 char }
{0x0 char }
{0x0 char }
{'Stick' }
{0x0 char }
{0x0 char }
{0x0 char }
Загрузите qGust сигнал в память по его имени.
qGust = logsout_DSR.getElement('qGust')qGust =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'qGust'
PropagatedName: ''
BlockPath: [1x1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 2
Values: [1x1 timeseries]
Methods, Superclasses
Можно добавить qGust сигнал на Dataset объект входных сигналов симуляции для загрузки в блоки Inport корневого уровня в вашей модели, или можно задать qGust как элемент в Input разделенный запятыми список параметров.
matlab.io.datastore.SimulationDatastore | Simulink.SimulationData.Dataset | Simulink.SimulationData.DatasetRef