simulationEnsembleDatastore

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

Описание

A 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) создает ансамбль симуляции из данных, ранее сгенерированных с помощью 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, смотрите Работа с удаленными данными

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

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

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

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

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

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

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

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

Имя файла последнего представителя ансамбля считывается в рабочую область рабочее пространство MATLAB виде строки. Когда вы используете read команда для чтения данных из ансамбля datastore, программа определяет, какой представитель ансамбля будет считываться следующим, и считывает данные из соответствующего файла. The 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, используйте subset. Чтобы перенести все данные представителя в таблицу или массив ячеек с помощью одной команды, используйте readall. Чтобы разбить ансамбль datastore, используйте partition(ds,n,index) синтаксис partition функция.

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

Примеры

свернуть все

Сгенерируйте simulation ensemble 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-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 - The Simulink.SimulationInput объект, который использовался для конфигурирования модели для генерации данных в файле. Вы можете использовать это для извлечения информации о условиях (таких как неисправные или исправные), в которых была запущена эта симуляция.

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

  • PMSignalLogName - имя переменной, содержащей записанные в записанные данные ('logsout' в этом примере). The 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
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

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

Теперь можно использовать ensemble для чтения и анализа сгенерированных данных в ансамбле datastore. См. 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 чтобы задать переменные, которые вы хотите считать. The 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 <reservedrangesplaceholder0>

Можно обработать данные в ансамблевом 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 (Simulink).)

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);

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