Считайте членские данные из datastore ансамбля
Используйте эту функцию, чтобы считать данные из хранилищ данных ансамбля для мониторинга состояния и прогнозирующего обслуживания.
считывает данные от члена datastore ансамбля data
= read(ensemble
)ensemble
. Функция читает переменные, заданные в SelectedVariables
свойство datastore ансамбля и возвращает их в таблице.
Если ансамбль не был считан начиная с его создания (или поскольку он был в последний раз сброшен с помощью reset
), затем read
считывает данные от первого члена ансамбля, как определено программным обеспечением. В противном случае, read
считывает данные от следующего члена ансамбля. read
обновляет LastMemberRead
свойство ансамбля идентифицировать последний раз участник чтения. Для получения дополнительной информации о том, как хранилища данных ансамбля работают, смотрите Ансамбли Данных для Мониторинга состояния и Прогнозирующего Обслуживания.
В общем случае вы используете 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 ансамбля файла для данных, хранимых в файлах MATLAB, и сконфигурируйте их с функциями, которые говорят программное обеспечение, как читать из и записать в datastore. (Для получения дополнительной информации о хранилищах данных ансамбля файла конфигурирования, смотрите Datastore Ансамбля Файла С Результатами измерений.) Из-за объема данных, unzip
операция занимает несколько минут.
% Create ensemble datastore that points to datafiles in current folder unzip fileEnsData.zip % extract compressed files location = pwd; extension = '.mat'; fensemble = fileEnsembleDatastore(location,extension); % Specify data and condition variables fensemble.DataVariables = ["gs";"sr";"load";"rate"]; fensemble.ConditionVariables = "label"; % Configure with functions for reading and writing variable data addpath(fullfile(matlabroot,'examples','predmaint','main')) % Make sure functions are on path fensemble.ReadFcn = @readBearingData; fensemble.WriteToMemberFcn = @writeBearingData;
Функции говорят read
и writeToLastMemberRead
управляет, как взаимодействовать с файлами данных, которые составляют ансамбль. Таким образом, когда вы вызываете read
команда, это использует readBearingData
считать все переменные в fensemble.SelectedVariables
. В данном примере readBearingData
извлечения запросили переменные из структуры, bearing
, и другие переменные сохранены в файле. Это также анализирует имя файла для состояния отказа данных.
Задайте переменные, чтобы считать, и считать их от первого члена ансамбля.
fensemble.SelectedVariables = ["gs";"load";"label"]; data = read(fensemble)
data=1×3 table
label gs load
________ _________________ ____
"Faulty" {146484x1 double} 0
Можно теперь обработать данные от участника по мере необходимости. В данном примере вычислите среднее значение сигнала, сохраненного в переменной gs
. Извлеките данные из таблицы, возвращенной read
.
gsdata = data.gs{1}; gsmean = mean(gsdata);
Можно записать среднему значению gsmean
назад к файлу данных как новая переменная. Для этого сначала расширьте список переменных данных в ансамбле, чтобы включать переменную для нового значения. Вызовите новую переменную gsMean
.
fensemble.DataVariables = [fensemble.DataVariables;"gsMean"]
fensemble = fileEnsembleDatastore with properties: ReadFcn: @readBearingData WriteToMemberFcn: @writeBearingData DataVariables: [5x1 string] IndependentVariables: [0x0 string] ConditionVariables: "label" SelectedVariables: [3x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: "/tmp/BR2019bd_1276998_130124/mlx_to_docbook2/tpb58a7794/predmaint-ex34165887/FaultData_01.mat" Files: [5x1 string]
Затем запишите полученное среднее значение в файл, соответствующий считанному в последний раз члену ансамбля. (См. Ансамбли Данных для Мониторинга состояния и Прогнозирующего Обслуживания.), Когда вы вызываете writeToLastMemberRead
, это преобразует данные в структуру и вызывает fensemble.WriteToMemberFcn
записать данные в файл.
writeToLastMemberRead(fensemble,'gsMean',gsmean);
Вызов read
снова совершенствует индикатор последнего участника чтения к следующему файлу в ансамбле и считывает данные из того файла.
data = read(fensemble)
data=1×3 table
label gs load
________ _________________ ____
"Faulty" {146484x1 double} 50
Можно подтвердить, что эти данные от различного участника путем исследования load
переменная в таблице. Здесь, его значение равняется 50, в то время как в ранее участнике чтения, это было 0.
Можно повторить, что обработка продвигается, чтобы вычислить и добавить среднее значение для этого члена ансамбля. На практике более полезно автоматизировать процесс чтения, обработки и записывания данные. Для этого сбросьте ансамбль к состоянию, в котором не были считаны никакие данные. Затем цикл через ансамбль и выполняет чтение, процесс и шаги записи для каждого участника.
reset(fensemble) while hasdata(fensemble) data = read(fensemble); gsdata = data.gs{1}; gsmean = mean(gsdata); writeToLastMemberRead(fensemble,'gsMean',gsmean); end
hasdata
команда возвращает false
когда каждый член ансамбля был считан. Теперь каждый файл данных в ансамбле включает gsMean
переменная вывела из данных gs
в том файле. Можно использовать методы как этот цикл, чтобы извлечь и обработать данные из файлов ансамбля, когда вы разрабатываете алгоритм прогнозирующего обслуживания. Для примера, иллюстрирующего более подробно использование datastore ансамбля файла в процессе разработки алгоритмов, смотрите Диагностику отказа Подшипника качения. Пример также показывает, как использовать Parallel Computing Toolbox™, чтобы ускорить обработку многочисленных ансамблей данных.
Чтобы подтвердить, что выведенная переменная присутствует в datastore ансамбля файла, считайте его от первых и вторых членов ансамбля. Для этого сбросьте ансамбль снова и добавьте новую переменную в выбранные переменные. На практике, после того, как вы вычислили полученные значения, это может быть полезно для только для чтения те значения, не перечитывая необработанные данные, которые могут занять значительное место в памяти. В данном примере считайте выбранные переменные, которые включают новую переменную, gsMean
, но не включайте необработанные данные, gs
.
reset(fensemble) fensemble.SelectedVariables = ["label";"load";"gsMean"]; data1 = read(fensemble)
data1=1×3 table
label load gsMean
________ ____ ______
"Faulty" 0 -0.23
data2 = read(fensemble)
data2=1×3 table
label load gsMean
________ ____ ________
"Faulty" 50 -0.22352
rmpath(fullfile(matlabroot,'examples','predmaint','main')) % Reset path
Считывать данные от нескольких членов ансамбля в одном вызове 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}
ensemble
— Datastore ансамбляfileEnsembleDatastore
возразите | simulationEnsembleDatastore
объектDatastore ансамбля, чтобы читать, заданный как a:
simulationEnsembleDatastore
объект — read
читает следующего члена ансамбля.
fileEnsembleDatastore
объект — read
использует функцию, заданную в ensemble.ReadFcn
свойство считать следующего члена ансамбля. (Для получения дополнительной информации о работе с хранилищами данных ансамбля файла, смотрите fileEnsembleDatastore
.)
В любом случае, read
возвращает таблицу, содержащую все переменные, заданные в ensemble.SelectedVariables
.
data
— Выбранные переменные от члена ансамбляtable
Выбранные переменные от члена ансамбля, возвращенного как table
. Табличные переменные являются выбранными переменными, и табличные данные являются значениями, считанными из данных ансамбля. По умолчанию, read
чтения один член ансамбля за один раз и возвращают одну строку таблицы.
Чтобы считать несколько членов ансамбля когда-то, установите ReadSize
свойство ensemble
к значению, больше, чем 1. Например, если вы устанавливаете ReadSize
к 3, затем read
читает следующие 3 членов ансамбля и возвращает таблицу с 3 строками. Если меньше, чем ReadSize
участники являются непрочитанными, затем read
возвращает таблицу со столькими же строк, сколько там остаются участники. Для примера смотрите Чтение Несколько членов Ансамбля в Одной Операции. Избегайте установки ReadSize
к такому большому значению, чтобы рискнуть исчерпывать память при загрузке данных.
info
— Данные и информация об участникеДанные и информация о члене ансамбля, возвращенная как структура с полями:
Size
— Размерности таблицы data
, возвращенный как вектор. Например, если у вашего ансамбля есть четыре переменные, заданные в ensemble.SelectedVariables
, затем Info.Size = [1 4]
.
FileName
— Путь к файлу данных, соответствующему члену ансамбля, к которому получают доступ, возвращенному как строка. Например, "C:\Data\Experiment1\fault1.mat"
. Вызов read
также устанавливает LastMemberRead
свойство ансамбля к этому значению. Если ReadSize
свойство ensemble
больше 1, это значение является вектором строки, содержащим пути ко всем файлам, к которым получают доступ.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.