Управляйте данными ансамбля в пользовательском формате файла
Объект 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)
fensemble = fileEnsembleDatastore(location,extension,Name,Value)
задает дополнительные свойства объекта с помощью одного или нескольких аргументов пары "имя-значение". Например, использование fensemble
= fileEnsembleDatastore(location
,extension
,Name,Value)'ConditionVariables',["FaultCond";"ID"]
задает условные переменные, когда вы создаете объект.
местоположение
Файлы или папкиФайлы или папки, из которых можно считать данные ансамбля, заданные как строка, вектор символов, массив строк или массив ячеек из символьных векторов. Если файлы не находятся в текущей папке, то 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"
расширение
Расширение файлаРасширение файла для файлов в 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
, 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
. Для более подробного примера смотрите 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/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
Не рекомендуемый запуск в R2018b
DataVariablesFcn
, IndependentVariablesFcn
и свойства ConditionVariablesFcn
будут удалены в будущем релизе. Используйте свойство ReadFcn
вместо этого.
Свойство ReadFcn
, введенное в R2018b, позволяет вам задать одну функцию, чтобы считать все типы переменных из вашего datastore ансамбля. Раньше, необходимо было определять функции отдельно для переменных данных, независимых переменных и условных переменных. Преимущество использования ReadFcn
состоит в том, что операция read
должна получить доступ к каждому членскому файлу только однажды, чтобы считать все переменные. С отдельными функциями для каждого типа переменной read
открывает файл до трех раз, чтобы считать все типы переменных. Таким образом обозначение одного ReadFcn
является более эффективным способом получить доступ к datastore.
Обновить ваш код, чтобы использовать новое свойство:
Перепишите свои функции чтения fileEnsembleDatastore
в одну новую функцию, которая читает переменные всех типов. (См., Создают и Datastore Ансамбля Файла конфигурации для примера такой функции.)
Установите DataVariablesFcn
, IndependentVariablesFcn
и ConditionVariablesFcn
к []
очищать их.
Установите ReadFcn
на новую функцию.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.