Управляйте данными ансамбля, сгенерированными generateSimulationEnsemble
или путем журналирования данных моделирования в Simulink
Объект simulationEnsembleDatastore
является datastore, специализированным для использования в разработке алгоритмов для мониторинга состояния и прогнозирующего обслуживания с помощью моделируемых данных.
Этот объект задает переменные данных, независимые переменные и условные переменные, сохраненные в наборе файлов данных MATLAB (MAT-файлы). Файлы данных содержат переменные Simulink.SimulationData.Dataset
, которые являются результатом регистрации данных во время симуляции модели Simulink®.
Для подробного примера, иллюстрирующего использование моделируемого datastore ансамбля, смотрите, Генерируют и Смоделированный ансамбль данных Использования. Для получения общей информации об ансамблях данных в Predictive Maintenance Toolbox™, смотрите Ансамбли Данных для Мониторинга состояния и Прогнозирующего Обслуживания.
Создать объект simulationEnsembleDatastore
:
Сгенерируйте и регистрируйте данные моделирования из модели Simulink. Можно сделать настолько использующий generateSimulationEnsemble
или любые другие средние значения журналирования симуляции к диску.
Создайте объект 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"]
задает независимые переменные, когда вы создаете объект.
местоположение
Filepath Путь к файлу к местоположению, в котором можно сохранить данные моделирования, заданные как строка или вектор символов. Путь к файлу может быть любым местоположением, поддержанным хранилищами данных MATLAB®, включая путь IRI, указывающий на удаленное местоположение. Однако, когда вы используете simulationEnsembleDatastore
, чтобы управлять удаленными данными, вы не можете использовать writeToLastMemberRead
, чтобы добавить данные в datastore ансамбля. Для получения дополнительной информации о работе с удаленными данными в MATLAB, смотрите работу с Удаленными данными (MATLAB)
Пример: pwd + "\simResults"
signallog
— Имя переменной регистрируемых сигналовИмя переменной регистрируемых сигналов, заданных как строка или вектор символов. Этот входной параметр говорит simulationEnsembleDatastore
, какая переменная данных в сохраненных MAT-файлах содержит регистрируемые данные моделирования. Это имя переменной задано в параметре конфигурации Signal logging
модели Simulink, из которой сгенерированы данные. Когда вы используете generateSimulationEnsemble
, чтобы сгенерировать данные моделирования для ансамбля, каждый сгенерированный MAT-файл содержит переменную, PMSignalLogName
, задавая имя переменной регистрируемых сигналов.
Пример: "logsout"
'DataVariables'
Переменные данных в ансамблеПеременные данных в ансамбле, заданном как массив строк. Переменные данных являются основным содержанием членов ансамбля. Переменные данных могут включать результаты измерений или производные данные для анализа и разработки прогнозирующих алгоритмов обслуживания. Например, ваши переменные данных могут включать измеренные или моделируемые сигналы вибрации и полученные значения, такие как среднее значение вибрации или пиковая частота вибрации. На практике ваши переменные данных, независимые переменные и условные переменные являются всеми отличными наборами переменных.
simulationEnsembleDatastore
устанавливает начальное значение DataVariables
к именам всех регистрируемых сигналов в данных, сгенерированных generateSimulationEnsemble
.
Можно также задать DataVariables
с помощью массива ячеек из символьных векторов, такого как {'Vibration';'Tacho'}
, но имена переменных всегда хранятся как массив строк, ["Vibration";"Tacho"]
. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.
IndependentVariables
— Независимые переменные в ансамбле[]
(значение по умолчанию) | массив строкНезависимые переменные в ансамбле, заданном как массив строк. Вы обычно используете независимые переменные, чтобы заказать членам ансамбля. Примерами являются метки времени, номер операционных часов или управляемые мили. Установите это свойство на имена таких переменных в вашем ансамбле. На практике ваши переменные данных, независимые переменные и условные переменные являются всеми отличными наборами переменных.
Можно также задать IndependentVariables
с помощью массива ячеек из символьных векторов, такого как {'Time';'Age'}
, но имена переменных всегда хранятся как массив строк, ["Time";"Age"]
. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.
ConditionVariables
— Условные переменные в ансамбле[]
(значение по умолчанию) | массив строкУсловные переменные в ансамбле, заданном как массив строк. Используйте условные переменные, чтобы маркировать участников в ансамбле согласно условию отказа или другим условиям работы, под которыми был забран член ансамбля. На практике ваши переменные данных, независимые переменные и условные переменные являются всеми отличными наборами переменных.
Можно также задать ConditionVariables
с помощью массива ячеек из символьных векторов, такого как {'GearFault';'Temperature'}
, но имена переменных всегда хранятся как массив строк, ["GearFault";"Temperature"]
. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.
SelectedVariables
— Переменные, чтобы читатьstring array of logged signal names
(значение по умолчанию) | массив строк Переменные, чтобы читать из ансамбля, заданного как массив строк. Используйте это свойство задать, какие переменные извлечены к рабочему пространству 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"]
. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.
ReadSize
Число членов, чтобы читатьЧисло членов, чтобы читать из 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
возвращает данные от первых трех членов ансамбля.
NumMembers
— Число членов в ансамблеЭто свойство доступно только для чтения.
Число членов в ансамбле, заданном как положительное целое число.
LastMemberRead
— Имя файла последнего чтения члена ансамбля""
(значение по умолчанию) | представляет в виде строки | массив строкЭто свойство доступно только для чтения.
Имя файла последнего чтения члена ансамбля в рабочее пространство MATLAB, заданное как строка. Когда вы используете команду read
, чтобы считать данные из datastore ансамбля, программное обеспечение определяет, какой член ансамбля читать затем, и считывает данные из соответствующего файла. Свойство LastMemberRead
содержит путь к последний раз файл чтения. Когда datastore ансамбля еще не был считан или был сброшен, LastMemberRead
является пустой строкой.
Когда вы вызываете writeToLastMemberRead
, чтобы добавить данные назад в datastore ансамбля, эта функция пишет в файл, заданный в LastMemberRead
.
По умолчанию read
считывает данные от одного члена ансамбля за один раз (свойство ReadSize
datastore ансамбля равняется 1). Когда ReadSize
> 1, LastMemberRead
является массивом строк, содержащим пути ко всему чтению файлов в новой операции read
.
Files
— Список файлов в datastore ансамбляЭто свойство доступно только для чтения.
Список файлов в 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]
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.