Загрузка Больших данных для симуляций

Симуляция моделей с множеством временных шагов и сигналов может использовать и создавать данные, которые являются слишком большими, чтобы помещаться в рабочую память на вашем компьютере. Когда ваши входные данные симуляции не помещаются в память, можно выбрать одну из нескольких стратегий, чтобы использовать эти данные в качестве входов симуляции с блоками Inport корневого уровня. Эти стратегии работают для загрузки данных, хранящихся в Dataset формат в MAT-файле версии 7.3, включая данные, записанные из другой симуляции.

  1. Когда отдельные входные сигналы слишком велики, чтобы помещаться в память, можно использовать matlab.io.datastore.SimulationDatastore объект для доступа к данным сигнала. Данные из SimulationDatastore объект загружается в симуляцию постепенно в фрагментах, которые помещаются в памяти.

  2. Когда ваши входы симуляции заданы Simulink.SimulationData.Dataset объект в файле, который слишком велик для загрузки в память, можно транслировать все содержимое Dataset объект в модель с помощью Simulink.SimulationData.DatasetRef объект.

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

См. также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте