Имитационные модели со многими временными шагами и сигналами могут использовать и создать данные, которые являются слишком большими, чтобы поместиться в оперативную память на вашем компьютере. Когда ваши входные данные симуляции не помещаются в память, можно выбрать одну из нескольких стратегий использовать те данные в качестве входа симуляции с корневым уровнем блоки Inport. Эти стратегии работают на загрузку данных, хранимых в формате Dataset
в MAT-файле Версии 7.3, включая данные, регистрируемые от другой симуляции.
Когда отдельные входные сигналы являются слишком большими, чтобы поместиться в память, можно использовать объект matlab.io.datastore.SimulationDatastore
получить доступ к данным сигнала. Данные из объекта SimulationDatastore
загружают в симуляцию инкрементно во фрагментах, которые помещаются в память.
Когда ваши входные параметры симуляции заданы объектом Simulink.SimulationData.Dataset
в файле, который является слишком большим, чтобы загрузить в память, можно передать целое содержимое потоком объекта Dataset
в модель с помощью объекта Simulink.SimulationData.DatasetRef
.
Когда сигналы помещаются в память и хранятся в файле, который является слишком большим, чтобы загрузить в память, можно загрузить отдельные сигналы из файла в память с помощью объекта Simulink.SimulationData.DatasetRef
.
Все большие стратегии загрузки данных для особого случая, когда ваши данные не помещаются в память и могут потребовать дополнительных шагов. Эти примеры используют данные, которые соответствуют полностью памяти, чтобы проиллюстрировать шаги, требуемые для большой загрузки данных. Когда ваши входные параметры симуляции помещаются в память, рассматривают использование других методов загрузки.
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
для сигнала с помощью индекса сигнала, имя или блок path, использует метод 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
, потоки данных сигнала в вашу модель. Можно включать поддержанный объект Signal
SimulationDatastore
как элемент в объекте Dataset
или как элемент в списке, разделенном запятыми параметра Input
.
Dataset
Используя объект DatasetRef
Когда ваши входные параметры симуляции заданы в Dataset
в файле, который является слишком большим, чтобы загрузить в память, можно создать объект Simulink.SimulationData.DatasetRef
передать входные параметры симуляции потоком в модель. Когда вы задаете объект DatasetRef
для Входного параметра на панели Импорта/Экспорта Данных, все сигналы в объекте Dataset
раньше создавали поток DatasetRef
в вашу модель. Используйте один из других больших методов загрузки данных, чтобы загрузить или передать отдельные сигналы потоком от объекта Dataset
.
Когда файл, где ваш вход Dataset
симуляции хранится, содержит другой Datasets
и данные, можно использовать функцию Simulink.SimulationData.DatasetRef.getDatasetVariableNames
, чтобы просмотреть список объектов Dataset
, содержавшихся в файле. Предварительный просмотр имен переменных в объекте Dataset
особенно полезен, когда содержимое файла не помещается в память.
datasetNames = Simulink.SimulationData.DatasetRef.getDatasetVariableNames('aircraftData.mat')
datasetNames = 1x3 cell array
{'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 array
{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
.
Simulink.SimulationData.Dataset
| Simulink.SimulationData.DatasetRef
| matlab.io.datastore.SimulationDatastore