exponenta event banner

simulationEnsembleDatastore

Управление данными ансамбля, сгенерированными generateSimulationEnsemble или путем регистрации данных моделирования в Simulink

Описание

A simulationEnsembleDatastore объект представляет собой хранилище данных, специализированное для использования при разработке алгоритмов мониторинга состояния и прогностического обслуживания с использованием моделируемых данных.

Этот объект определяет переменные данных, независимые переменные и переменные условий, хранящиеся в коллекции файлов данных MATLAB (MAT-файлы). Файлы данных содержат Simulink.SimulationData.Dataset переменные, являющиеся результатом регистрации данных во время моделирования модели Simulink ® .

Подробный пример, иллюстрирующий использование моделируемого хранилища данных ансамбля, см. в разделе Создание и использование моделируемого ансамбля данных. Общие сведения об ансамблях данных в Toolbox™ предиктивного обслуживания см. в разделе Ансамбли данных для контроля состояния и предиктивного обслуживания.

Создание

Создание simulationEnsembleDatastore объект:

  1. Создание и регистрация данных моделирования из модели Simulink. Вы можете сделать это с помощью generateSimulationEnsemble или любые другие средства моделирования записи на диск.

  2. Создать simulationEnsembleDatastore , который указывает на сгенерированные данные моделирования с помощью simulationEnsembleDatastore (описано ниже).

При наличии данных моделирования, ранее сгенерированных с помощью generateSimulationEnsemble или другими средствами, можно использовать функцию создания simulationEnsembleDatastore для создания нового объекта хранилища данных ансамбля моделирования в любое время.

Описание

пример

ensemble = simulationEnsembleDatastore(location) создает ансамбль моделирования на основе данных, ранее сгенерированных с помощью generateSimulationEnsemble в папке, указанной location. Функция идентифицирует переменные ансамбля в сгенерированных данных из информации, хранящейся в сгенерированных MAT-файлах. Функция заполняет DataVariables и SelectedVariables свойства ensemble с названиями этих ансамблевых переменных.

пример

ensemble = simulationEnsembleDatastore(location,signallog) использование signallog чтобы определить, какая переменная в MAT-файлах содержит записанные сигналы. Используйте имя переменной, указанное в Signal logging параметр конфигурации модели Simulink, из которой создаются данные. Указание этой переменной позволяет ансамблю рассматривать эти сигналы как переменные данных ансамбля, а не signallog сама переменная. Другие переменные в MAT-файле также возвращаются как переменные данных ансамбля.

ensemble = simulationEnsembleDatastore(location,signallog,Name,Value) задает дополнительные свойства объекта, используя один или несколько аргументов пары имя-значение. Например, использование 'IndependentVariables',["Age";"ID"] задает независимые переменные при создании объекта.

Входные аргументы

развернуть все

Путь к файлу, в котором должны храниться данные моделирования, указанный как строка или символьный вектор. Путь к файлу может быть любым местоположением, поддерживаемым хранилищами данных MATLAB ®, включая путь IRI, указывающий на удаленное местоположение. Однако при использовании simulationEnsembleDatastore для управления удаленными данными нельзя использовать writeToLastMemberRead для добавления данных в хранилище данных ансамбля. Дополнительные сведения о работе с удаленными данными в MATLAB см. в разделе Работа с удаленными данными

Пример: pwd + "\simResults"

Имя переменной регистрируемых сигналов, указанное как строка или символьный вектор. Этот входной аргумент сообщает simulationEnsembleDatastore какая переменная данных в сохраненных MAT-файлах содержит записанные данные моделирования. Это имя переменной указано в Signal logging параметр конфигурации модели Simulink, из которой создаются данные. При использовании generateSimulationEnsemble для генерации данных моделирования для ансамбля каждый сгенерированный MAT-файл содержит переменную, PMSignalLogName, указывая имя переменной регистрируемых сигналов.

Пример: "logsout"

Свойства

развернуть все

Переменные данных в ансамбле, заданные как строковый массив. Переменные данных являются основным содержанием членов ансамбля. Переменные данных могут включать измеренные данные или производные данные для анализа и разработки алгоритмов прогностического обслуживания. Например, переменные данных могут включать измеренные или смоделированные сигналы вибрации и полученные значения, такие как среднее значение вибрации или пиковая частота вибрации. На практике переменные данных, независимые переменные и переменные условий являются различными наборами переменных.

simulationEnsembleDatastore устанавливает начальное значение DataVariables к именам всех зарегистрированных сигналов в данных, сгенерированных с помощью generateSimulationEnsemble. simulationEnsembleDatastore также добавляет переменные SimulationInput и SimulationMetadata кому DataVariables. Эти переменные содержат информацию о том, как выполнялось моделирование.

Можно также указать DataVariables использование массива ячеек символьных векторов, таких как {'Vibration';'Tacho'}, но имена переменных всегда хранятся в виде строкового массива, ["Vibration";"Tacho"]. Если задать матрицу с именами переменных, матрица будет сведена к вектору столбца.

Независимые переменные в ансамбле, заданные как строковый массив. Как правило, для упорядочения участников ансамбля используются независимые переменные. Примерами являются временные метки, количество рабочих часов или мили. Задайте для этого свойства имена таких переменных в ансамбле. На практике переменные данных, независимые переменные и переменные условий являются различными наборами переменных.

Можно также указать IndependentVariables использование массива ячеек символьных векторов, таких как {'Time';'Age'}, но имена переменных всегда хранятся в виде строкового массива, ["Time";"Age"]. Если задать матрицу с именами переменных, матрица будет сведена к вектору столбца.

Переменные условий в ансамбле, заданные как строковый массив. Используйте переменные условия для маркировки членов ансамбля в соответствии с состоянием отказа или другим рабочим состоянием, при котором был собран член ансамбля. На практике переменные данных, независимые переменные и переменные условий являются различными наборами переменных.

Можно также указать ConditionVariables использование массива ячеек символьных векторов, таких как {'GearFault';'Temperature'}, но имена переменных всегда хранятся в виде строкового массива, ["GearFault";"Temperature"]. Если задать матрицу с именами переменных, матрица будет сведена к вектору столбца.

Переменные для чтения из ансамбля, заданные как строковый массив. Используйте это свойство, чтобы указать, какие переменные извлекаются в рабочую область MATLAB при использовании read для считывания данных из ансамбля. read возвращает строку таблицы, содержащую переменную таблицы для каждого имени, указанного в SelectedVariables. Например, предположим, что у вас есть ансамбль, ensemble, который содержит шесть переменных, и вы хотите прочитать только две из них, Vibration и FaultState. Установите SelectedVariables свойство и вызов read.

ensemble.SelectedVariables = ["Vibration";"FaultState"];
data = read(ensemble)

SelectedVariables может быть любой комбинацией переменных в DataVariables, ConditionVariables, и IndependentVariables свойства. Если SelectedVariables пуст, read создает ошибку.

simulationEnsembleDatastore устанавливает начальное значение SelectedVariables к именам всех зарегистрированных сигналов в генерируемых данных generateSimulationEnsemble.

Можно указать SelectedVariables использование массива ячеек символьных векторов, таких как {'Vibration';'Tacho'}, но имена переменных всегда хранятся в виде строкового массива, ["Vibration";"Tacho"]. Если задать матрицу с именами переменных, матрица будет сведена к вектору столбца.

Число участников, считываемых из хранилища данных ансамбля одновременно, указанное как положительное целое число, меньшее, чем общее число участников ансамбля. По умолчанию read возвращает однострочную таблицу, содержащую данные от одного члена ансамбля. Чтение данных из нескольких элементов в одном read задайте для этого свойства целое значение, большее единицы. Например, если ReadSize = 3, затем read возвращает таблицу из трех строк, в которой каждая строка содержит данные от другого члена ансамбля. Если меньше, чем ReadSize члены не прочитаны, затем read возвращает таблицу, содержащую столько строк, сколько осталось элементов.

Свойство хранилища данных ансамбля LastMemberRead содержит имена всех файлов, прочитанных в течение последнего read операция. Таким образом, например, если ReadSize = 3, затем a read наборы операций LastMemberRead в строковый вектор, содержащий три имени файлов.

При использовании writeToLastMemberRead, укажите данные для записи в виде таблицы с числом строк, равным ReadSize. writeToLastMemberRead команда обновляет элементы, указанные LastMemberRead, запись одной строки таблицы в каждый указанный файл.

Изменение ReadSize свойство также переводит ансамбль в непрочитанное состояние. Например, предположим, что вы читаете некоторых участников ансамбля по одному (ReadSize = 1), а затем изменить ReadSize до 3. Следующее read возвращает данные от первых трех участников ансамбля.

Это свойство доступно только для чтения.

Количество участников в ансамбле, указанное как положительное целое число.

Это свойство доступно только для чтения.

Имя файла последнего участника ансамбля, считанного в рабочую область MATLAB, указанное как строка. При использовании read команда для считывания данных из хранилища данных ансамбля, программа определяет, какой член ансамбля будет считываться следующим, и считывает данные из соответствующего файла. LastMemberRead содержит путь к последнему прочитанному файлу. Если хранилище данных ансамбля еще не было прочитано или было сброшено, LastMemberRead является пустой строкой.

При звонке writeToLastMemberRead для добавления данных обратно в хранилище данных ансамбля эта функция записывает данные в файл, указанный в LastMemberRead.

По умолчанию read считывает данные от одного участника ансамбля за раз ( ReadSize свойство хранилища данных ансамбля - 1). Когда ReadSize > 1, LastMemberRead - строковый массив, содержащий пути ко всем файлам, прочитанным в последнем read операция.

Это свойство доступно только для чтения.

Список файлов в хранилище данных ансамбля, указанный как вектор строки столбца длины NumMembers. Каждая запись содержит полный путь к файлу в хранилище данных. Файлы находятся в том порядке, в котором read читает команда участников ансамбля.

Пример: ["C:\Data\Data_01.csv"; "C:\Data\Data_02.csv"; "C:\Data\Data_03.csv"]

Функции объекта

read и writeToLastMemberRead функции специализированы для данных ансамбля предиктивного набора средств технического обслуживания. Другие функции, такие как reset и hasdata, идентичны тем, которые используются с datastore объекты в MATLAB. Для извлечения определенных участников ансамбля в меньшее или более специализированное хранилище данных ансамбля используйте subset. Чтобы передать все данные элемента в таблицу или массив ячеек с помощью одной команды, используйте команду readall. Для разделения хранилища данных ансамбля используйте partition(ds,n,index) синтаксис partition функция.

readСчитывание данных участников из хранилища данных ансамбля
writeToLastMemberReadЗапись данных в хранилище данных ансамбля
subsetСоздание нового хранилища данных ансамбля из подмножества существующего хранилища данных ансамбля
resetСброс хранилища данных в исходное состояние
hasdataОпределение доступности данных для чтения
progress Определение объема считанных данных
readallСчитывание всех данных в хранилище данных
numpartitionsКоличество разделов хранилища данных
partitionРазделение хранилища данных
tallСоздать массив высокого уровня
isPartitionableОпределение возможности разделения хранилища данных
isShuffleableОпределение возможности тасования хранилища данных

Примеры

свернуть все

Создание хранилища данных имитационного ансамбля, представляющего машину, работающую в условиях отказа, путем моделирования модели машины Simulink ® с изменением параметра отказа.

Загрузите модель Simulink. Эта модель является упрощенной версией модели коробки передач, описанной в разделе Использование Simulink для генерации данных о неисправностях. В этом примере моделируется только один режим отказа - отказ зубчатого колеса.

mdl = 'TransmissionCasingSimplified';
open_system(mdl)

Неисправность зубьев зубьев моделируется как нарушение в Gear Tooth fault подсистема. Величина возмущения контролируется переменной модели ToothFaultGain, где ToothFaultGain = 0 соответствует отсутствию отказа зуба зуба (исправная работа). Для генерации совокупности данных об отказах используется generateSimulationEnsemble для моделирования модели при различных значениях ToothFaultGain, в диапазоне от -2 до нуля. Эта функция использует массив Simulink.SimulationInput объекты для настройки модели Simulink для каждого участника ансамбля. Каждое моделирование генерирует отдельного члена ансамбля в собственном файле данных. Создать такой массив и использовать setVariable назначение значения коэффициента усиления при отказе зуба для каждого прогона.

toothFaultValues  = -2:0.5:0; % 5 ToothFaultGain values 

for ct = numel(toothFaultValues):-1:1
    simin(ct) = Simulink.SimulationInput(mdl);
    simin(ct) = setVariable(simin(ct),'ToothFaultGain',toothFaultValues(ct));
end

В этом примере модель уже сконфигурирована для регистрации определенных значений сигнала. Vibration и Tacho (см. раздел Экспорт данных сигнала с использованием регистрации сигнала (Simulink)). generateSimulationEnsemble далее конфигурирует модель следующим образом:

  • Сохранение зарегистрированных данных в файлы в указанной папке.

  • Используйте timetable формат регистрации сигналов.

  • Хранить каждый Simulink.SimulationInput объект в сохраненном файле с соответствующими записанными данными.

Укажите местоположение для созданных данных. Для этого примера сохраните данные в папке с именем Data в текущей папке. Индикатор status равно 1 (true) если все моделирования завершены без ошибок.

mkdir Data
location = fullfile(pwd,'Data');
[status,E] = generateSimulationEnsemble(simin,location);
[22-Apr-2021 20:12:51] Running simulations...
[22-Apr-2021 20:13:12] Completed 1 of 5 simulation runs
[22-Apr-2021 20:13:29] Completed 2 of 5 simulation runs
[22-Apr-2021 20:13:52] Completed 3 of 5 simulation runs
[22-Apr-2021 20:14:24] Completed 4 of 5 simulation runs
[22-Apr-2021 20:14:41] Completed 5 of 5 simulation runs

Внутри Data проверьте один из файлов. Каждый файл представляет собой MAT-файл, содержащий следующие переменные MATLAB ® :

  • SimulationInput- Simulink.SimulationInput , который использовался для настройки модели для генерации данных в файле. Это можно использовать для извлечения информации об условиях (например, неисправных или исправных), при которых выполнялось моделирование.

  • logsout - A Dataset объект, содержащий все данные, которые модель Simulink сконфигурирована для регистрации.

  • PMSignalLogName - имя переменной, содержащей записанные данные ('logsout' в этом примере). simulationEnsembleDatastore использует это имя для синтаксического анализа данных в файле.

  • SimulationMetadata - другая информация о моделировании, которое сгенерировало данные, зарегистрированные в файле.

Теперь можно создать хранилище данных ансамбля моделирования с использованием созданных данных. Получающееся simulationEnsembleDatastore объект указывает на сгенерированные данные. Объект перечисляет переменные данных в ансамбле, и по умолчанию для чтения выбираются все переменные. Осмотрите DataVariables и SelectedVariables свойства ансамбля для подтверждения этих обозначений.

ensemble = simulationEnsembleDatastore(location)
ensemble = 
  simulationEnsembleDatastore with properties:

           DataVariables: [4x1 string]
    IndependentVariables: [0x0 string]
      ConditionVariables: [0x0 string]
       SelectedVariables: [4x1 string]
                ReadSize: 1
              NumMembers: 5
          LastMemberRead: [0x0 string]
                   Files: [5x1 string]

ensemble.DataVariables
ans = 4x1 string
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

ensemble.SelectedVariables
ans = 4x1 string
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

Теперь вы можете использовать ensemble для чтения и анализа сгенерированных данных в хранилище данных ансамбля. Посмотрите simulationEnsembleDatastore для получения дополнительной информации.

В общем, вы используете read команда для извлечения данных из simulationEnsembleDatastore в рабочую область MATLAB ®. Часто ансамбль содержит больше переменных, чем требуется для конкретного анализа. Используйте SelectedVariables имущества simulationEnsembleDatastore для выбора подмножества переменных для чтения.

В этом примере используйте следующий код для создания simulationEnsembleDatastore с использованием данных, ранее сгенерированных при запуске модели Simulink ® с различными значениями отказов ( см.generateSimulationEnsemble.). Ансамбль включает в себя данные моделирования для пяти различных значений параметра модели, ToothFaultGain. Из-за объема данных, unzip операция занимает несколько минут.

unzip simEnsData.zip  % extract compressed files
ensemble = simulationEnsembleDatastore(pwd,'logsout')
ensemble = 
  simulationEnsembleDatastore with properties:

           DataVariables: [5x1 string]
    IndependentVariables: [0x0 string]
      ConditionVariables: [0x0 string]
       SelectedVariables: [5x1 string]
                ReadSize: 1
              NumMembers: 5
          LastMemberRead: [0x0 string]
                   Files: [5x1 string]

Модель, которая создала данные, TransmissionCasingSimplified, был сконфигурирован таким образом, что результирующий ансамбль содержит переменные, включая данные акселерометра, Vibrationи данные тахометра, Tacho. По умолчанию simulationEnsembleDatastore объект обозначает все эти переменные как переменные данных и выбранные переменные, как показано в DataVariables и SelectedVariables свойства.

ensemble.DataVariables
ans = 5x1 string
    "PMSignalLogName"
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

ensemble.SelectedVariables
ans = 5x1 string
    "PMSignalLogName"
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

Предположим, что для анализа, который вы хотите сделать, вам нужно только Vibration данные и Simulink.SimulationInput объект, описывающий условия, при которых были смоделированы данные этого элемента. Набор ensemble.SelectedVariables для указания переменных, которые требуется прочитать. read затем команда извлекает эти переменные из текущего члена ансамбля.

ensemble.SelectedVariables = ["Vibration";"SimulationInput"];
data1 = read(ensemble)
data1=1×2 table
         Vibration                SimulationInput        
    ___________________    ______________________________

    {20202x1 timetable}    {1x1 Simulink.SimulationInput}

data.Vibration является массивом ячеек, содержащим один timetable сохраняет время моделирования и соответствующий вибросигнал. Теперь эти данные можно обработать по мере необходимости. Например, извлеките данные вибрации из таблицы и постройте ее график.

vibdata1 = data1.Vibration{1};
plot(vibdata1.Time,vibdata1.Data)
title('Vibration - First Ensemble Member')

Figure contains an axes. The axes with title Vibration - First Ensemble Member contains an object of type line.

При следующем звонке read в этом ансамбле последнее прочитанное обозначение участника переходит к следующему члену ансамбля (см. Ансамбли данных для мониторинга состояния и предиктивного обслуживания). Прочитайте выбранные переменные из следующего участника ансамбля.

data2 = read(ensemble)
data2=1×2 table
         Vibration                SimulationInput        
    ___________________    ______________________________

    {20215x1 timetable}    {1x1 Simulink.SimulationInput}

Чтобы подтвердить, что data1 и data2 содержат данные от разных членов ансамбля, исследуют значения параметра изменяемой модели, ToothFaultGain. Для каждого ансамбля это значение хранится в Variables области SimulationInput переменная.

data1.SimulationInput{1}.Variables
ans = 
  Variable with properties:

           Name: 'ToothFaultGain'
          Value: -2
      Workspace: 'global-workspace'
    Description: ""

data2.SimulationInput{1}.Variables
ans = 
  Variable with properties:

           Name: 'ToothFaultGain'
          Value: -1.5000
      Workspace: 'global-workspace'
    Description: ""

Этот результат подтверждает, что data1 от участника ансамбля с ToothFaultGain = -2, и data2 из элемента с ToothFaultGain = –1.5.

Можно обрабатывать данные в хранилище данных ансамбля и добавлять производные переменные к членам ансамбля. В этом примере обрабатывается значение переменной для вычисления метки, которая указывает, содержит ли элемент ансамбля данные, полученные при наличии неисправности. Затем вы добавляете этот лейбл в ансамбль.

В этом примере используйте следующий код для создания simulationEnsembleDatastore с использованием данных, ранее созданных при выполнении модели Simulink ® с различными значениями отказов. ( см.generateSimulationEnsemble.) Ансамбль включает в себя данные моделирования для пяти различных значений параметра модели, ToothFaultGain. Модель настроена на запись данных моделирования в переменную с именем logsout в MAT-файлах, которые хранятся для этого примера в simEnsData.zip. Из-за объема данных, unzip операция может занять минуту или две.

unzip simEnsData.zip  % extract compressed files
ensemble = simulationEnsembleDatastore(pwd,'logsout')
ensemble = 
  simulationEnsembleDatastore with properties:

           DataVariables: [5x1 string]
    IndependentVariables: [0x0 string]
      ConditionVariables: [0x0 string]
       SelectedVariables: [5x1 string]
                ReadSize: 1
              NumMembers: 5
          LastMemberRead: [0x0 string]
                   Files: [5x1 string]

Прочитайте данные от первого участника ансамбля. Программа определяет, какой ансамбль является первым участником, и обновляет свойство ensemble.LastMemberRead для отражения имени соответствующего файла.

data = read(ensemble)
data=1×5 table
    PMSignalLogName           SimulationInput                   SimulationMetadata                   Tacho                Vibration     
    _______________    ______________________________    _________________________________    ___________________    ___________________

      {'logsout'}      {1x1 Simulink.SimulationInput}    {1x1 Simulink.SimulationMetadata}    {20202x1 timetable}    {20202x1 timetable}

По умолчанию все переменные, хранящиеся в данных ансамбля, обозначаются как SelectedVariables. Поэтому возвращаемая строка таблицы включает все переменные ансамбля, включая переменную. SimulationInput, который содержит Simulink.SimulationInput объект, настроивший моделирование для этого участника ансамбля. Этот объект включает в себя ToothFaultGain значение, используемое для члена ансамбля, хранящееся в структуре данных в его Variables собственность. Изучите это значение. (Дополнительные сведения о том, как хранится конфигурация моделирования, см. в разделе Simulink.SimulationInput (Симулинк).)

data.SimulationInput{1}
ans = 
  SimulationInput with properties:

          ModelName: 'TransmissionCasingSimplified'
       InitialState: [0x0 Simulink.op.ModelOperatingPoint]
      ExternalInput: []
    ModelParameters: [0x0 Simulink.Simulation.ModelParameter]
    BlockParameters: [0x0 Simulink.Simulation.BlockParameter]
          Variables: [1x1 Simulink.Simulation.Variable]
          PreSimFcn: []
         PostSimFcn: []
         UserString: ''

Inputvars = data.SimulationInput{1}.Variables;
Inputvars.Name
ans = 
'ToothFaultGain'
Inputvars.Value
ans = -2

Предположим, что требуется преобразовать ToothFaultGain значения для каждого члена ансамбля в двоичный индикатор наличия или отсутствия отказа зуба. Предположим далее, что из вашего опыта работы с системой вы знаете, что значения коэффициента усиления при повреждении зуба менее 0,1 величины достаточно малы, чтобы считаться здоровой работой. Преобразуйте значение усиления для этого ансамбля в индикатор, который равен 0 (без ошибок) для -0.1 < усиление < 0,1, и 1 (отказ) в противном случае.

sT = abs(Inputvars.Value) < 0.1;

Чтобы добавить новый индикатор отказа зуба к соответствующим данным ансамбля, сначала разверните список переменных данных в ансамбле, чтобы включить переменную для индикатора.

ensemble.DataVariables = [ensemble.DataVariables; "ToothFault"];
ensemble.DataVariables
ans = 6x1 string
    "PMSignalLogName"
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"
    "ToothFault"

Эта операция концептуально эквивалентна добавлению столбца в таблицу данных ансамбля. Теперь это DataVariables содержит новое имя переменной, присвойте производное значение этому столбцу элемента с помощью writeToLastMemberRead.

writeToLastMemberRead(ensemble,'ToothFault',sT);

На практике необходимо добавить индикатор отказа зуба к каждому члену ансамбля. Для этого необходимо сбросить хранилище данных ансамбля в непрочитанное состояние, чтобы следующая операция чтения началась у первого участника ансамбля. Затем, петля через всех участников ансамбля, вычисления ToothFault для каждого элемента и добавление его. reset операция не изменяется ensemble.DataVariables, так "ToothFault" все еще присутствует в этом списке.

reset(ensemble);

sT = false; 
while hasdata(ensemble)
    data = read(ensemble);
    InputVars = data.SimulationInput{1}.Variables;
    TFGain = InputVars.Value;
    sT = abs(TFGain) < 0.1;
    writeToLastMemberRead(ensemble,'ToothFault',sT);
end

Наконец, обозначьте новый индикатор отказа зуба как переменную условия в хранилище данных ансамбля. Это обозначение можно использовать для отслеживания и ссылки на переменные в данных ансамбля, которые представляют условия, при которых были созданы данные элемента.

ensemble.ConditionVariables = {"ToothFault"};
ensemble.ConditionVariables
ans = 
"ToothFault"

Можно добавить новую переменную в ensemble.SelectedVariables когда вы хотите прочитать его для дальнейшего анализа. Пример, показывающий дополнительные способы управления и анализа данных, хранящихся в simulationEnsembleDatastore см. раздел Использование Simulink для формирования данных об отказах.

Считывание данных от нескольких участников ансамбля за один вызов read используйте команду ReadSize свойство хранилища данных ансамбля. В этом примере используется simulationEnsembleDatastore, но вы можете использовать ту же технику для fileEnsembleDatastore.

Используйте следующий код для создания simulationEnsembleDatastore с использованием данных, ранее сгенерированных при запуске модели Simulink с различными значениями отказов (см. generateSimulationEnsemble). Ансамбль включает в себя данные моделирования для пяти различных значений параметра модели, ToothFaultGain. (Из-за объема данных, unzip операция может занять минуту или две.) Укажите некоторые переменные данных для чтения.

unzip simEnsData.zip  % extract compressed files
ensemble = simulationEnsembleDatastore(pwd,'logsout');
ensemble.SelectedVariables = ["Vibration";"SimulationInput"];

По умолчанию вызов read в этом хранилище данных ансамбля возвращается однострочная таблица, содержащая значения Vibration и SimulationInput переменные для первого участника ансамбля. Изменить ReadSize свойство для чтения сразу трех членов.

ensemble.ReadSize = 3;
data1 = read(ensemble)
data1=3×2 table
         Vibration                SimulationInput        
    ___________________    ______________________________

    {20202x1 timetable}    {1x1 Simulink.SimulationInput}
    {20215x1 timetable}    {1x1 Simulink.SimulationInput}
    {20204x1 timetable}    {1x1 Simulink.SimulationInput}

read возвращает таблицу из трех строк, в которой каждая строка содержит данные одного из первого, второго и третьего участников ансамбля. read также обновляет LastReadMember свойство хранилища данных ансамбля на строковый массив, содержащий пути к трем соответствующим файлам. Избегайте настройки ReadSize значение настолько велико, что при загрузке данных может оказаться недостаточно памяти.

Если ансамбль содержит три или более дополнительных участников, следующий read возвращает данные из четвертого, пятого и шестого элементов. Поскольку ансамбль этого примера содержит всего пять участников, следующий read возвращает только две строки.

data2 = read(ensemble)
data2=2×2 table
         Vibration                SimulationInput        
    ___________________    ______________________________

    {20213x1 timetable}    {1x1 Simulink.SimulationInput}
    {20224x1 timetable}    {1x1 Simulink.SimulationInput}

Представлен в R2018a