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) создает ансамбль симуляции из данных ранее сгенерированное использование 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
isPartitionableОпределите, partitionable ли datastore
isShuffleableОпределите, shuffleable ли datastore

Примеры

свернуть все

Сгенерируйте 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);
[29-Jan-2020 20:14:22] Running simulations...
[29-Jan-2020 20:14:42] Completed 1 of 5 simulation runs
[29-Jan-2020 20:14:55] Completed 2 of 5 simulation runs
[29-Jan-2020 20:15:12] Completed 3 of 5 simulation runs
[29-Jan-2020 20:15:23] Completed 4 of 5 simulation runs
[29-Jan-2020 20:15:31] Completed 5 of 5 simulation runs

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

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

  • logsoutDataset объект, содержащий все данные, которые модель 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
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

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

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

Можно обработать данные в 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
    "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