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

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

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

| |

Похожие темы

Была ли эта тема полезной?