Управление данными ансамбля в пользовательском формате файла
A fileEnsembleDatastore
объект является datastore, специализированным для использования в разработке алгоритмов мониторинга условия и прогнозирующего обслуживания с использованием измеренных данных.
Ансамбль является сбором представителя данных, хранящихся в наборе файлов. The fileEnsembleDatastore
объект задает переменные данных, независимые переменные и переменные условий в ансамбле. Вы обеспечиваете функции, которые говорят fileEnsembleDatastore
объект, как считать каждый тип переменной из набора файлов. Поэтому можно использовать fileEnsembleDatastore
управлять данными ансамбля, хранящимися в любом формате файла или строения переменных.
Данные для fileEnsembleDatastore
объект может храниться в любом месте, поддерживаемом MATLAB® хранилища данных, включая удаленные местоположения, такие как облачное хранилище с использованием Amazon S3™ (Simple Storage Service), Windows Azure® Хранилище больших двоичных объектов и Hadoop® Распределенная файловая система (HDFS™).
Подробный пример, иллюстрирующий использование файла datastore ансамбля, см. Файл Ensemble Datastore с измеренными данными. Для получения общей информации о ансамблях данных в Predictive Maintenance Toolbox™, смотрите Ансамбли данных для мониторинга условия и прогнозирующего обслуживания.
location
- Файлы или папкиФайлы или папки, из которых можно считать данные ансамбля, заданные как строка, вектор символов, строковые массивы или массив ячеек векторов символов. Если файлов нет в текущей папке, то location
должен содержать полные или относительные пути.
Если вы задаете папку, то fileEnsembleDatastore
использует все файлы в этой папке с расширением, заданным extension
. Кроме того, укажите явный список файлов, которые будут включены. Вы также можете использовать символ подстановки (*) при указании location
. Этот символ указывает, что все соответствующие файлы или все файлы в соответствующих папках включены в datastore.
Путь к файлу может быть любым местоположением, поддерживаемым хранилищами данных MATLAB, включая путь IRI, указывающий на удаленное местоположение, таким как облачное хранилище с помощью Amazon S3 (Simple Storage Service), Windows Azure Blob Storage и Hadoop Distributed File System (Hstem). Для получения дополнительной информации о работе с удаленными данными в MATLAB, смотрите Работа с удаленными данными.
Пример: pwd + "\simResults"
Пример: {'C:\dir\data\file1.xls','C:\dir\data\file2.xlsx'}
Пример: "../dir/data/*.mat"
extension
- Расширение файлаРасширение файла для файлов в datastore, заданное как строка или вектор символов, такой как ".mat"
или '.csv'
.
Если datastore содержит файлы, имеющие более одного расширения, задайте их как строковый вектор, например [".xls",".xlsx"]
. Функции, которые вы поставляете для ReadFcn
и WriteToMemberFcn
свойства должны быть способны взаимодействовать со всеми указанными типами файлов.
ReadFcn
- Функция для чтения всех выбранных переменных[]
(по умолчанию) | указатель на функциюФункция для чтения всех выбранных переменных из ансамбля, заданная как указатель на функцию, которую вы предоставляете. Вы пишете функцию, которая инструктирует программное обеспечение, как считать переменные из файла данных, содержащего представителя вашего ансамбля. Функция имеет:
Два входа, имя файла (строка) и имена сигналов (строковый вектор) для загрузки из файла
Один выход, строка таблицы с табличными переменными для каждой независимой переменной
Когда вы задаете ReadFcn
программа использует эту функцию, чтобы считать все выбранные переменные из ансамбля, независимо от того, названы ли они в DataVariables
, IndependentVariables
, или ConditionVariables
.
Например, предположим, что вы записываете следующую функцию, readVars
, для чтения переменных из ваших файлов. Эта функция создает таблицу, содержащую переменные в файле данных, которые совпадают с переменными в векторе входа строки variables
.
function data = readVars(filename,variables) data = table(); mfile = matfile(filename); % Allows partial loading for ct=1:numel(variables) val = mfile.(variables{ct}); if numel(val) > 1 val = {val}; end data.(variables{ct}) = val; end end
Сохраните функцию в файле MATLAB в текущей папке или по пути. Затем, если вы создаете fileEnsembleDatastore
вызванный fensemble
, задать ReadFcn
следующим образом.
fensemble.ReadFcn = @readVars;
Когда вы звоните read(fensemble)
, программное обеспечение использует readVars
чтобы считать все переменные в SelectedVariables
свойство ансамбля datastore. Необходимо задать это свойство, чтобы считать данные из fileEnsembleDatastore
представитель. В противном случае, read
генерирует ошибку.
WriteToMemberFcn
- Функция для добавления данных[]
(по умолчанию) | указатель на функциюФункция для записи данных в последний читаемый представитель ансамбля, заданная как указатель на функцию, которую вы предоставляете. Вы пишете функцию, которая инструктирует программное обеспечение, как записать переменные в файл данных, содержащий представителя вашего ансамбля. Функция имеет:
Два входа, имя файла (строка) и структура данных, имена полей которых являются переменными данных для записи, и значения которых являются соответствующими значениями
Нет выходов
Например, предположим, что вы записываете следующую функцию, writeNewData
, для записи данных в ваши файлы. Эта функция записывает структуру входных данных в указанный файл данных.
function writeNewData(filename,data) save(filename, '-append', '-struct', 'structData'); end
Храните writeNewData
в файле MATLAB в текущей папке или в пути. Затем, если вы создаете fileEnsembleDatastore
вызванный fensemble
, задать WriteToMemberFcn
следующим образом:
fensemble.WriteToMemberFcn = @writeNewData;
Когда вы вызываете writeToLastMemberRead
команда на fensemble
, программное обеспечение использует writeNewData
для добавления новых данных к файлу данных последнего считанного представителя ансамбля. Вы должны задать это свойство, чтобы добавить данные в fileEnsembleDatastore
представитель. В противном случае, writeToLastMemberRead
генерирует ошибку.
DataVariables
- Переменные данных в ансамбле[]
(по умолчанию) | строковые массивыПеременные данных в ансамбле, заданные как строковые массивы. Переменные данных являются основным содержимым представителей ансамбля. Переменные данных могут включать измеренные данные или выведенные данные для анализа и разработки прогнозирующих алгоритмов обслуживания. Для примера ваши переменные данных могут включать измеренные или моделируемые сигналы вибрации и выведенные значения, такие как среднее значение вибрации или пиковая частота вибрации. На практике ваши переменные данных, независимые переменные и переменные условия являются отдельными наборами переменных.
Можно также задать DataVariables
использование массива ячеек из векторов символов, таких как {'Vibration';'Tacho'}
, но имена переменных всегда хранятся как строковые массивы ["Vibration";"Tacho"]
. Если вы задаете матрицу имен переменных, матрица выравнивается до вектора-столбца.
IndependentVariables
- Независимые переменные в ансамбле[]
(по умолчанию) | строковые массивыНезависимые переменные в ансамбле, заданные как строковые массивы. Вы обычно используете независимые переменные, чтобы упорядочить представителей ансамбля. Примерами являются временные метки, количество часов работы или мили, управляемые. Установите это свойство на имена таких переменных в вашем ансамбле. На практике ваши переменные данных, независимые переменные и переменные условия являются отдельными наборами переменных.
Можно также задать IndependentVariables
использование массива ячеек из векторов символов, таких как {'Time';'Age'}
, но имена переменных всегда хранятся как строковые массивы ["Time";"Age"]
. Если вы задаете матрицу имен переменных, матрица выравнивается до вектора-столбца.
ConditionVariables
- Переменные условия в ансамбле[]
(по умолчанию) | строковые массивыПеременные условия в ансамбле, заданные как строковые массивы. Используйте переменные условия для маркировки представителей ансамбля в соответствии с состоянием отказа или другим рабочим состоянием, при котором был собран представитель ансамбля. На практике ваши переменные данных, независимые переменные и переменные условия являются отдельными наборами переменных.
Можно также задать ConditionVariables
использование массива ячеек из векторов символов, таких как {'GearFault';'Temperature'}
, но имена переменных всегда хранятся как строковые массивы ["GearFault";"Temperature"]
. Если вы задаете матрицу имен переменных, матрица выравнивается до вектора-столбца.
SelectedVariables
- Переменные, которые нужно считать[]
(по умолчанию) | строковые массивы Переменные для чтения из ансамбля, заданные как строковые массивы. Используйте это свойство, чтобы указать, какие переменные извлекаются в рабочее пространство MATLAB при использовании read
команда для чтения данных из ансамбля текущих представителей. read
возвращает строку таблицы, содержащую табличную переменную для каждого имени, заданного в SelectedVariables
. Например, предположим, что у вас есть ансамбль, fensemble
, которая содержит шесть переменных, и вы хотите считать только две из них, Vibration
и FaultState
. Установите SelectedVariables
свойство и вызов read
:
fensemble.SelectedVariables = ["Vibration";"FaultState"]; data = read(fensemble)
SelectedVariables
может быть любой комбинацией переменных в DataVariables
, ConditionVariables
, и IndependentVariables
свойства. Если SelectedVariables
пуст, read
генерирует ошибку.
Можно задать SelectedVariables
использование массива ячеек из векторов символов, таких как {'Vibration';'Tacho'}
, но имена переменных всегда хранятся как строковые массивы ["Vibration";"Tacho"]
. Если вы задаете матрицу имен переменных, матрица выравнивается до вектора-столбца.
ReadSize
- Количество представителейКоличество представителей для чтения из ансамбля datastore сразу, заданное как положительное целое число, которое меньше, чем общее количество представителей в ансамбле. По умолчанию, read
команда возвращает таблицу с одной строкой, содержащую данные от одного представителя ансамбля. Чтобы считать данные от нескольких представителей в одном read
операция, установите это свойство на целое значение, больше единицы. Для примера, если ReadSize
= 3, тогда read
возвращает трехстрочную таблицу, в которой каждая строка содержит данные от другого представителя ансамбля. Если меньше ReadSize
представители непрочитаны, тогда read
возвращает таблицу с таким количеством строк, сколько осталось представителей.
Свойство datastore ансамбля LastMemberRead
содержит имена всех файлов, считанных в течение последнего read
операция. Таким образом, например, если ReadSize
= 3, затем a read
операционные наборы LastMemberRead
в строковый вектор, содержащий три имени файлов.
Когда вы используете writeToLastMemberRead
, задайте данные для записи в виде таблицы с количеством строк, равным ReadSize
. writeToLastMemberRead
команда обновляет представителей, заданную LastMemberRead
, запись одной строки таблицы в каждый указанный файл.
Изменение ReadSize
свойство также сбрасывает ансамбль в непрочитанное состояние. Например, предположим, что вы читаете некоторых представителей ансамбля по одному (ReadSize
= 1), а затем измените ReadSize
по 3. Следующее read
операция возвращает данные от первых трёх представителей ансамбля.
NumMembers
- Число представителей ансамбляЭто свойство доступно только для чтения.
Количество представителей ансамбля, заданное как положительное целое число.
LastMemberRead
- Имя файла последнего представителя ансамбля""
(по умолчанию) | строку | строковые массивыЭто свойство доступно только для чтения.
Имя файла последнего представителя ансамбля считывается в рабочую область рабочее пространство MATLAB виде строки. Когда вы используете read
команда для чтения данных из ансамбля datastore, программа определяет, какой представитель ансамбля будет считываться следующим, и считывает данные из соответствующего файла. The 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
, и subset
функции специализированы на данных ансамбля Predictive Maintenance Toolbox. Другие функции, такие как reset
и hasdata
, идентичны используемым с datastore
объекты в MATLAB. Чтобы перенести все данные представителя в таблицу или массив ячеек с помощью одной команды, используйте readall
. Чтобы извлечь конкретные представителей ансамбля в меньший или более специализированный ансамбль datastore, используйте subset
. Чтобы разбить ансамбль datastore, используйте partition(ds,n,index)
синтаксис partition
функция.
read | Чтение данных о представителе из ансамбля datastore |
writeToLastMemberRead | Запись данных в представитель ансамбля datastore |
subset | Создайте новый ансамбль datastore из подмножества существующего ансамбля datastore |
reset | Сбросьте datastore в начальное состояние |
hasdata | Определите, доступны ли данные для чтения |
progress | Определите, сколько данных было считано |
readall | Чтение всех данных в datastore |
numpartitions | Количество разделов datastore |
partition | Раздел datastore |
tall | Создайте длинный массив |
isPartitionable | Определите, является ли datastore разделяемым |
isShuffleable | Определите, является ли datastore shuffleable |
Создайте file ensemble datastore для данных, хранящихся в файлах MATLAB ®, и сконфигурируйте его с функциями, которые говорят программному обеспечению, как читать и записывать в datastore .
В данном примере у вас есть два файла данных, содержащих исправные рабочие данные из несущей системы, baseline_01.mat
и baseline_02.mat
. У вас также есть три файла данных, содержащих дефектные данные из одной системы, FaultData_01.mat
, FaultData_02.mat
, и FaultData_03.mat
.
unzip fileEnsData.zip % extract compressed files location = pwd; extension = '.mat'; fensemble = fileEnsembleDatastore(location,extension);
Прежде чем вы сможете взаимодействовать с данными в ансамбле, необходимо создать функции, которые скажут программному обеспечению, как обработать файлы данных, чтобы считать переменные в рабочее пространство MATLAB и записать данные обратно в файлы. Сохраните эти функции в расположении в пути к файлу. В данном примере используются следующие предоставленные функции:
readBearingData
- Извлечение запрашиваемых переменных из структуры, bearing
и другие переменные, сохраненные в файле. Эта функция также анализирует имя файла для состояния отказа данных. Функция возвращает строку таблицы, содержащую по одной переменной таблицы для каждой запрашиваемой переменной.
writeBearingData
- Возьмите структуру и запишите ее переменные в файл данных как отдельные сохраненные переменные.
fensemble.ReadFcn = @readBearingData; fensemble.WriteToMemberFcn = @writeBearingData;
Наконец, установите свойства ансамбля, чтобы идентифицировать переменные данных, переменные условия и выбранные переменные для чтения. В данном примере переменные в файле данных gs
, sr
, load
, и rate
. Предположим, что вам нужно только считать метку отказа, gs
, и sr
. Установите эти переменные как выбранные.
fensemble.DataVariables = ["gs";"sr";"load";"rate"]; fensemble.ConditionVariables = ["label"]; fensemble.SelectedVariables = ["label";"gs";"sr"];
Осмотрите ансамбль. Функции и имена переменных присваиваются соответствующим свойствам.
fensemble
fensemble = fileEnsembleDatastore with properties: ReadFcn: @readBearingData WriteToMemberFcn: @writeBearingData DataVariables: [4x1 string] IndependentVariables: [0x0 string] ConditionVariables: "label" SelectedVariables: [3x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: [0x0 string] Files: [5x1 string]
Эти функции, которые вы присвоили, сообщают read
и writeToLastMemberRead
команды для взаимодействия с файлами данных, составляющими ансамбль. Для примера, когда вы вызываете read
команда, она использует readBearingData
чтобы считать все переменные в fensemble.SelectedVariables
. Для более подробного примера смотрите File Ensemble Datastore с измеренными данными.
Создайте file ensemble datastore для данных, хранящихся в файлах MATLAB, и сконфигурируйте его с функциями, которые говорят программному обеспечению, как читать и записывать в datastore. (Для получения дополнительной информации о настройке файловых ансамблевых хранилищ данных смотрите File Ensemble Datastore With Measured Data.)
% 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" {5000x1 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/BR2021ad_1657350_6935/mlx_to_docbook3/tpb00852e4/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" {5000x1 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
The hasdata
команда возвращает false
когда каждый представитель ансамбля был прочитан. Теперь каждый файл данных в ансамбле включает gsMean
переменная, выведенная из gs
данных в этом файле. Можно использовать методы, подобные этому циклу, чтобы извлечь и обработать данные из файлов ансамбля, когда вы разрабатываете алгоритм прогнозирования-обслуживания. Для примера, более подробно иллюстрирующего использование file ensemble 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.22648
data2 = read(fensemble)
data2=1×3 table
label load gsMean
________ ____ ________
"Faulty" 50 -0.22937
rmpath(fullfile(matlabroot,'examples','predmaint','main')) % Reset path
DataVariablesFcn
, IndependentVariablesFcn
, и ConditionVariablesFcn
свойства будут удаленыНе рекомендуемый запуск в R2018b
The DataVariablesFcn
, IndependentVariablesFcn
, и ConditionVariablesFcn
свойства будут удалены в следующем релизе. Используйте ReadFcn
вместо этого свойство.
The ReadFcn
свойство, введенное в R2018b, позволяет вам задать одну функцию, чтобы считать все типы переменных из вашего ансамбля datastore. Ранее вы должны были назначать функции отдельно для переменных данных, независимых переменных и переменных условий. Преимущество использования ReadFcn
это то, что read
операция должна иметь доступ к каждому файлу представителя только один раз, чтобы считать все переменные. С отдельными функциями для каждого типа переменной, read
открывает файл до трех раз, чтобы считать все типы переменных. Таким образом, обозначение одной ReadFcn
является более эффективным способом доступа к datastore.
Чтобы обновить код, чтобы использовать новое свойство:
Перепишите fileEnsembleDatastore
чтение функций в одну новую функцию, которая читает переменные всех типов. (Пример такой функции см. в разделе Создание и настройка File Ensemble Datastore.)
Задайте DataVariablesFcn
, IndependentVariablesFcn
, и ConditionVariablesFcn
на []
чтобы очистить их.
Задайте ReadFcn
к новой функции.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.