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

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

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

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

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

Смотрите также

| |

Похожие темы