Управляйте данными ансамбля в пользовательском формате файла
fileEnsembleDatastore
объект является datastore, специализированным для использования в разработке алгоритмов для мониторинга состояния и прогнозирующего обслуживания с помощью результатов измерений.
Ансамбль является набором членских данных, хранимых в наборе файлов. fileEnsembleDatastore
объект задает переменные данных, независимые переменные и условные переменные в ансамбле. Вы обеспечиваете функции, которые говорят fileEnsembleDatastore
возразите, как считать каждый тип переменной из набора файлов. Поэтому можно использовать fileEnsembleDatastore
управлять данными ансамбля, хранимыми в любом формате файла или настройке переменных.
Данные для fileEnsembleDatastore
объект может храниться в любом местоположении, поддержанном хранилищами данных MATLAB®, включая удаленные местоположения, такие как "облачное" хранилище с помощью Amazon S3™ (Простой Сервис Устройства хранения данных), Устройство хранения данных Windows Azure® Blob и Hadoop® Distributed File System (HDFS™).
Для подробного примера, иллюстрирующего использование datastore ансамбля файла, смотрите Datastore Ансамбля Файла С Результатами измерений. Для получения общей информации об ансамблях данных в Predictive Maintenance Toolbox™, смотрите Ансамбли Данных для Мониторинга состояния и Прогнозирующего Обслуживания.
задает дополнительные свойства объекта с помощью одного или нескольких аргументов пары "имя-значение". Например, использование fensemble
= fileEnsembleDatastore(location
,extension
,Name,Value)'ConditionVariables',["FaultCond";"ID"]
задает условные переменные, когда вы создаете объект.
location
— Файлы или папкиФайлы или папки, из которых можно считать данные ансамбля, заданные как строка, вектор символов, массив строк или массив ячеек из символьных векторов. Если файлы не находятся в текущей папке, то location
должен содержать полные или относительные пути.
Если вы задаете папку, то fileEnsembleDatastore
использование все файлы в той папке с расширением, заданным extension
. В качестве альтернативы задайте явный список файлов, чтобы включать. Можно также использовать подстановочный символ (*) при определении location
. Этот символ указывает, что все файлы соответствия или все файлы в соответствующих папках включены в datastore.
Путь к файлу может быть любым местоположением, поддержанным хранилищами данных MATLAB, включая путь IRI, указывающий на удаленное местоположение, такими как "облачное" хранилище с помощью Amazon S3 (Простой Сервис Устройства хранения данных), Windows Azure Blob Storage и Распределенная файловая система Hadoop (HDFS). Для получения дополнительной информации о работе с удаленными данными в MATLAB, смотрите работу с Удаленными данными (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
возвращает таблицу со столькими же строк, сколько там остаются участники.
Свойство 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 ансамбля файла для данных, хранимых в файлах MATLAB®, и сконфигурируйте их с функциями, которые говорят программное обеспечение, как читать из и записать в datastore.
В данном примере у вас есть два файла данных, содержащие здоровые эксплуатационные данные от системы подшипника, baseline_01.mat
и baseline_02.mat
. У вас также есть три файла данных, содержащие дефектные данные из той же системы, FaultData_01.mat
, FaultData_02.mat
, и FaultData_03.mat
. (Из-за объема данных, unzip
операция занимает несколько минут.) На практике у вас может быть намного больше файлов данных.
unzip fileEnsData.zip % extract compressed files location = pwd; extension = '.mat'; fensemble = fileEnsembleDatastore(location,extension);
Прежде чем можно будет взаимодействовать с данными в ансамбле, необходимо создать функции, которые говорят программное обеспечение, как обработать файлы данных, чтобы считать переменные в рабочее пространство MATLAB и записать данные назад к файлам. Сохраните эти функции в местоположение на пути к файлу. В данном примере используйте следующие предоставленные функции:
readBearingData
— Извлеките требуемые переменные из структуры, bearing
, и другие переменные сохранены в файле. Эта функция также анализирует имя файла для состояния отказа данных. Функция возвращает строку таблицы, содержащую одну табличную переменную для каждой требуемой переменной.
writeBearingData
— Возьмите структуру и запишите ее переменные в файл данных, когда индивидуум сохранил переменные.
addpath(fullfile(matlabroot,'examples','predmaint','main')) % Make sure functions are on path fensemble.ReadFcn = @readBearingData; fensemble.WriteToMemberFcn = @writeBearingData;
Наконец, установите свойства ансамбля идентифицировать переменные данных, условные переменные и выбранные переменные для чтения. В данном примере переменными в файле данных является gs
, sr
загрузка
, и 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
. Для более подробного примера смотрите Datastore Ансамбля Файла С Результатами измерений.
rmpath(fullfile(matlabroot,'examples','predmaint','main')) % Reset path
Создайте 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
Не рекомендуемый запуск в R2018b
DataVariablesFcn
, IndependentVariablesFcn
, и ConditionVariablesFcn
свойства будут удалены в будущем релизе. Используйте ReadFcn
свойство вместо этого.
ReadFcn
свойство, введенное в R2018b, позволяет вам задать одну функцию, чтобы считать все типы переменных из вашего datastore ансамбля. Раньше, необходимо было определять функции отдельно для переменных данных, независимых переменных и условных переменных. Преимущество использования ReadFcn
это read
операция должна получить доступ к каждому членскому файлу только однажды, чтобы считать все переменные. С отдельными функциями для каждого типа переменной, read
открывает файл до трех раз, чтобы считать все типы переменных. Таким образом, определяя один ReadFcn
более эффективный путь состоит в том, чтобы получить доступ к datastore.
Обновить ваш код, чтобы использовать новое свойство:
Перепишите свой fileEnsembleDatastore
считайте функции в одну новую функцию, которая читает переменные всех типов. (См., Создают и Datastore Ансамбля Файла конфигурации для примера такой функции.)
Установите DataVariablesFcn
, IndependentVariablesFcn
, и ConditionVariablesFcn
к []
очистить их.
Установите ReadFcn
к новой функции.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.