Управляйте данными ансамбля, сгенерированными 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
)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"]
задает независимые переменные, когда вы создаете объект.
location
filepath Путь к файлу к местоположению, в котором можно сохранить данные моделирования в виде строки или вектора символов. Путь к файлу может быть любым местоположением, поддержанным хранилищами данных MATLAB®, включая путь IRI, указывающий на удаленное местоположение. Однако, когда вы используете simulationEnsembleDatastore
чтобы управлять удаленными данными, вы не можете использовать writeToLastMemberRead
добавить данные в datastore ансамбля. Для получения дополнительной информации о работе с удаленными данными в MATLAB, смотрите работу с Удаленными данными
Пример: pwd + "\simResults"
signallog
— Имя переменной регистрируемых сигналовИмя переменной регистрируемых сигналов в виде строки или вектора символов. Этот входной параметр говорит simulationEnsembleDatastore
какая переменная данных в сохраненных MAT-файлах содержит регистрируемые данные моделирования. Это имя переменной задано в Signal logging
параметр конфигурации модели Simulink, из которой сгенерированы данные. Когда вы используете generateSimulationEnsemble
чтобы сгенерировать данные моделирования для ансамбля, каждый сгенерированный MAT-файл содержит переменную, PMSignalLogName
, определение имени переменной регистрируемых сигналов.
Пример: "logsout"
DataVariables
— Переменные данных в ансамблеПеременные данных в ансамбле в виде массива строк. Переменные данных являются основным содержанием членов ансамбля. Переменные данных могут включать результаты измерений или производные данные для анализа и разработки прогнозирующих алгоритмов обслуживания. Например, ваши переменные данных могут включать измеренные или симулированные сигналы вибрации и полученные значения, такие как среднее значение вибрации или пиковая частота вибрации. На практике ваши переменные данных, независимые переменные и условные переменные являются всеми отличными наборами переменных.
simulationEnsembleDatastore
устанавливает начальное значение DataVariables
к именам всех регистрируемых сигналов в данных, сгенерированных с generateSimulationEnsemble
. simulationEnsembleDatastore
также добавляет переменные SimulationInput
и SimulationMetadata
к DataVariables
. Эти переменные содержат информацию о том, как симуляция выполнялась.
Можно также задать 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
isempty, read
генерирует ошибку.
simulationEnsembleDatastore
устанавливает начальное значение SelectedVariables
к именам всех регистрируемых сигналов в сгенерированных данных generateSimulationEnsemble
.
Можно задать SelectedVariables
с помощью массива ячеек из символьных векторов, такого как {'Vibration';'Tacho'}
, но имена переменных всегда хранятся как массив строк, ["Vibration";"Tacho"]
. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.
ReadSize
— Число членов, чтобы читатьЧисло членов, чтобы читать из datastore ансамбля целиком в виде положительного целого числа, которое меньше, чем общее количество членов в ансамбле. По умолчанию, read
команда возвращает таблицу с одной строкой, содержащую данные от одного члена ансамбля. Считывать данные от нескольких членов на сингле read
операция, набор это свойство к целочисленному значению, больше, чем одно. Например, если ReadSize
= 3, затем read
возвращает таблицу с тремя строками, где каждая строка содержит данные от различного члена ансамбля. Если меньше, чем ReadSize
члены являются непрочитанными, затем read
возвращает таблицу со столькими же строк, сколько там остаются члены.
Свойство LastMemberRead
datastore ансамбля содержит имена всего чтения файлов во время нового
read
операция. Таким образом, например, если ReadSize
= 3, затем a 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. Чтобы передать все данные члена в таблицу или массив ячеек с одной командой, использовать readall
. Чтобы разделить datastore ансамбля, используйте partition(ds,n,index)
синтаксис partition
функция.
read | Считайте данные члена из datastore ансамбля |
writeToLastMemberRead | Запишите данные члену datastore ансамбля |
reset | Сброс Datastore к начальному состоянию |
hasdata | Определите, доступны ли данные для чтения |
progress | Определите, сколько данных было считано |
readall | Считывайте все данные в datastore |
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);
[18-Aug-2020 02:51:41] Running simulations... [18-Aug-2020 02:51:51] Completed 1 of 5 simulation runs [18-Aug-2020 02:52:00] Completed 2 of 5 simulation runs [18-Aug-2020 02:52:11] Completed 3 of 5 simulation runs [18-Aug-2020 02:52:20] Completed 4 of 5 simulation runs [18-Aug-2020 02:52:28] Completed 5 of 5 simulation runs
В Data
папка, исследуйте один из файлов. Каждым файлом является MAT-файл, содержащий следующие переменные MATLAB®:
SimulationInput
— Simulink.SimulationInput
объект, который использовался, чтобы сконфигурировать модель для генерации данных в файле. Можно использовать это, чтобы извлечь информацию об условиях (такой как дефектный или здоровый), под которым была запущена эта симуляция.
logsout
— 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
"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
(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
для каждого члена и добавления его. 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.