Симуляция моделей с множеством временных шагов и сигналов может использовать и создавать данные, которые являются слишком большими, чтобы помещаться в рабочую память на вашем компьютере. Когда ваши входные данные симуляции не помещаются в память, можно выбрать одну из нескольких стратегий, чтобы использовать эти данные в качестве входов симуляции с блоками 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