Считайте членские данные из datastore ансамбля
Используйте эту функцию, чтобы считать данные из хранилищ данных ансамбля для мониторинга состояния и прогнозирующего обслуживания.
data = read(ensemble)
[data,info] = read(ensemble)
считывает данные от члена 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/BR2019ad_1062519_57051/mlx_to_docbook2/tp69f316d9/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
.
данные
Выбранные переменные от члена ансамбляtable
Выбранные переменные от члена ансамбля, возвращенного как table
. Табличные переменные являются выбранными переменными, и табличные данные являются значениями, считанными из данных ансамбля. По умолчанию read
читает одного члена ансамбля за один раз и возвращает одну строку таблицы.
Чтобы считать несколько членов ансамбля когда-то, установите свойство ReadSize
ensemble
к значению, больше, чем 1. Например, если вы устанавливаете ReadSize
на 3, затем read
читает следующие 3 членов ансамбля и возвращает таблицу с 3 строками. Если меньше, чем участники ReadSize
являются непрочитанными, то read
возвращает таблицу со столькими же строк, сколько там остаются участники. Для примера смотрите Чтение Несколько членов Ансамбля в Одной Операции. Избегайте установки ReadSize
к такому большому значению, чтобы рискнуть исчерпывать память при загрузке данных.
информация
Данные и информация об участникеДанные и информация о члене ансамбля, возвращенная как структура с полями:
Размер
Размерности таблицы data
, возвращенной как вектор. Например, если у вашего ансамбля есть четыре переменные, заданные в ensemble.SelectedVariables
, то Info.Size = [1 4]
.
FileName
Путь к файлу данных, соответствующему члену ансамбля, к которому получают доступ, возвращенному как строка. Например, "C:\Data\Experiment1\fault1.mat"
. Вызов read
также устанавливает свойство LastMemberRead
ансамбля к этому значению. Если свойство ReadSize
ensemble
больше, чем 1, это значение является вектором строки, содержащим пути ко всем файлам, к которым получают доступ.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.