simulationEnsembleDatastore

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

Описание

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

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

Для подробного примера, иллюстрирующего использование моделируемого datastore ансамбля, смотрите, Генерируют и Смоделированный ансамбль данных Использования. Для получения общей информации об ансамблях данных в Predictive Maintenance Toolbox™, смотрите Ансамбли Данных для Мониторинга состояния и Прогнозирующего Обслуживания.

Создание

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

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

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

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

Синтаксис

ensemble = simulationEnsembleDatastore(location)
ensemble = simulationEnsembleDatastore(location,signallog)
ensemble = simulationEnsembleDatastore(location,signallog,Name,Value)

Описание

пример

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, чтобы добавить данные в datastore ансамбля. Для получения дополнительной информации о работе с удаленными данными в MATLAB, смотрите работу с Удаленными данными (MATLAB)

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

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

Пример: "logsout"

Свойства

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

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

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

Можно также задать 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"]. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.

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

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

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

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

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

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

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

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

Когда вы вызываете writeToLastMemberRead, чтобы добавить данные назад в datastore ансамбля, эта функция пишет в файл, заданный в LastMemberRead.

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

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

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

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

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

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

readСчитайте членские данные из datastore ансамбля
writeToLastMemberReadЗапишите данные члену datastore ансамбля
resetСброс Datastore к начальному состоянию
hasdataОпределите, доступны ли данные для чтения
progress Определите, сколько данных было считано
numpartitionsКоличество разделов datastore
partitionРазделите datastore
tallСоздание tall array

Примеры

свернуть все

Сгенерируйте datastore ансамбля симуляции данных, представляющих машину, действующую при условиях отказа путем симуляции модели 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-Feb-2019 01:55:22] Running simulations...
[22-Feb-2019 01:55:29] Completed 1 of 5 simulation runs
[22-Feb-2019 01:55:35] Completed 2 of 5 simulation runs
[22-Feb-2019 01:55:41] Completed 3 of 5 simulation runs
[22-Feb-2019 01:55:48] Completed 4 of 5 simulation runs
[22-Feb-2019 01:55:54] Completed 5 of 5 simulation runs

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

  • Объект SimulationInput — The Simulink.SimulationInput, который использовался, чтобы сконфигурировать модель для генерации данных в файле. Можно использовать это, чтобы извлечь информацию об условиях (такой как дефектный или здоровый), под которым была запущена эта симуляция.

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

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

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

Теперь можно создать datastore ансамбля симуляции с помощью сгенерированных данных. Получившийся объект 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 array
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

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

Можно теперь использовать ensemble, чтобы считать и анализировать сгенерированные данные в datastore ансамбля. Смотрите simulationEnsembleDatastore для получения дополнительной информации.

В целом вы используете команду read, чтобы извлечь данные из объекта simulationEnsembleDatastore в рабочую область MATLAB®. Часто, ваш ансамбль содержит больше переменных, чем необходимо использовать для конкретного анализа. Используйте свойство SelectedVariables объекта the 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 array
    "PMSignalLogName"
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

ensemble.SelectedVariables
ans = 5x1 string array
    "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')

В следующий раз, когда вы вызываете 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'

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

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

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

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

В данном примере используйте следующий код, чтобы создать объект 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 array
    "PMSignalLogName"
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"
    "ToothFault"

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

writeToLastMemberRead(ensemble,'ToothFault',sT);

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

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

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

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

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

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

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

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

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

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

    [20213x1 timetable]    [1x1 Simulink.SimulationInput]
    [20224x1 timetable]    [1x1 Simulink.SimulationInput]

Введенный в R2018a