fileEnsembleDatastore

Управляйте данными ансамбля в пользовательском формате файла

Описание

fileEnsembleDatastore объект является datastore, специализированным для использования в разработке алгоритмов для мониторинга состояния и прогнозирующего обслуживания с помощью результатов измерений.

Ансамбль является набором данных члена, хранимых в наборе файлов. fileEnsembleDatastore объект задает переменные данных, независимые переменные и условные переменные в ансамбле. Вы обеспечиваете функции, которые говорят fileEnsembleDatastore возразите, как считать каждый тип переменной из набора файлов. Поэтому можно использовать fileEnsembleDatastore управлять данными ансамбля, хранимыми в любом формате файла или настройке переменных.

Данные для fileEnsembleDatastore объект может храниться в любом местоположении, поддержанном MATLAB® хранилища данных, включая удаленные местоположения, такие как "облачное" хранилище с помощью Amazon S3™ (Простой Сервис Устройства хранения данных), Windows Azure® Устройство хранения данных блоба и Hadoop® Распределенная файловая система (HDFS™).

Для подробного примера, иллюстрирующего использование datastore ансамбля файла, смотрите Datastore Ансамбля Файла С Результатами измерений. Для получения общей информации об ансамблях данных в Predictive Maintenance Toolbox™, смотрите Ансамбли Данных для Мониторинга состояния и Прогнозирующего Обслуживания.

Создание

Описание

пример

fensemble = fileEnsembleDatastore(location,extension) создает fileEnsembleDatastore возразите что точки против данных в пути к файлу, заданном location и наличие заданного расширения файла. Установите свойства объекта задать функции для чтения от и записи в datastore ансамбля.

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, смотрите работу с Удаленными данными.

Пример: pwd + "\simResults"

Пример: {'C:\dir\data\file1.xls','C:\dir\data\file2.xlsx'}

Пример: "../dir/data/*.mat"

Расширение файла для файлов в datastore в виде строки или вектора символов, таких как ".mat" или '.csv'.

Если datastore содержит файлы, имеющие больше чем одно расширение, задайте их как вектор строки, такой как [".xls",".xlsx"]. Функции, которые вы предоставляете для ReadFcn и WriteToMemberFcn свойства должны смочь взаимодействовать со всеми заданными типами файлов.

Свойства

развернуть все

Функция для чтения всех выбранных переменных от ансамбля в виде указателя на функцию вы обеспечиваете. Вы пишете функцию, которая сообщает программному обеспечению, как считать переменные из файла данных, содержащего член вашего ансамбля. Функция имеет:

  • Два входных параметров, имя файла (строка) и имена сигналов (представляют вектор в виде строки) загружать из файла

  • Один выход, строка таблицы с табличными переменными для каждой независимой переменной

Когда вы задаете 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 генерирует ошибку.

Функция для того, чтобы записать данные считанному в последний раз члену ансамбля в виде указателя на функцию вы обеспечиваете. Вы пишете функцию, которая сообщает программному обеспечению, как записать переменные в файл данных, содержащий член вашего ансамбля. Функция имеет:

  • Два входных параметров, имя файла (строка) и структура данных, имена полей которой являются переменными данных, чтобы записать, и чьи значения являются соответствующими значениями

  • Никакие выходные параметры

Например, предположите, что вы пишете следующую функцию, writeNewData, для того, чтобы записать данные к вашим файлам. Эта функция пишет структуру входных данных под названием data к заданному файлу данных.

function writeNewData(filename,data)
save(filename, '-append', '-struct', 'data');
end

Сохраните writeNewData в файле MATLAB в текущей папке или на пути. Затем если вы создаете fileEnsembleDatastore названный fensemble, установите WriteToMemberFcn можно следующим образом:

fensemble.WriteToMemberFcn = @writeNewData;

Когда вы вызываете writeToLastMemberRead команда на fensemble, программное обеспечение использует writeNewData добавить новые данные в файл данных считанного в последний раз члена ансамбля. Необходимо установить это свойство добавить данные в fileEnsembleDatastore член. В противном случае, writeToLastMemberRead генерирует ошибку.

Переменные данных в ансамбле в виде массива строк. Переменные данных являются основным содержанием членов ансамбля. Переменные данных могут включать результаты измерений или производные данные для анализа и разработки прогнозирующих алгоритмов обслуживания. Например, ваши переменные данных могут включать измеренные или симулированные сигналы вибрации и полученные значения, такие как среднее значение вибрации или пиковая частота вибрации. На практике ваши переменные данных, независимые переменные и условные переменные являются всеми отличными наборами переменных.

Можно также задать DataVariables с помощью массива ячеек из символьных векторов, такого как {'Vibration';'Tacho'}, но имена переменных всегда хранятся как массив строк, ["Vibration";"Tacho"]. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.

Независимые переменные в ансамбле в виде массива строк. Вы обычно используете независимые переменные, чтобы заказать членам ансамбля. Примерами являются метки времени, номер операционных часов или управляемые мили. Установите это свойство на имена таких переменных в вашем ансамбле. На практике ваши переменные данных, независимые переменные и условные переменные являются всеми отличными наборами переменных.

Можно также задать IndependentVariables с помощью массива ячеек из символьных векторов, такого как {'Time';'Age'}, но имена переменных всегда хранятся как массив строк, ["Time";"Age"]. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.

Условные переменные в ансамбле в виде массива строк. Используйте условные переменные, чтобы пометить члены в ансамбле согласно условию отказа или другим условиям работы, под которыми был забран член ансамбля. На практике ваши переменные данных, независимые переменные и условные переменные являются всеми отличными наборами переменных.

Можно также задать ConditionVariables с помощью массива ячеек из символьных векторов, такого как {'GearFault';'Temperature'}, но имена переменных всегда хранятся как массив строк, ["GearFault";"Temperature"]. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.

Переменные, чтобы читать из ансамбля в виде массива строк. Используйте это свойство задать, какие переменные извлечены к рабочему пространству MATLAB, когда вы используете read команда, чтобы считать данные из ансамбля текущего элемента. read возвращает строку таблицы, содержащую табличную переменную для каждого имени, заданного в SelectedVariables. Например, предположите, что у вас есть ансамбль, fensemble, это содержит шесть переменных, и вы хотите только для чтения двум из них, Vibration и FaultState. Установите SelectedVariables свойство и вызов read:

fensemble.SelectedVariables = ["Vibration";"FaultState"];
data = read(fensemble)

SelectedVariables может быть любая комбинация переменных в DataVariables, ConditionVariables, и IndependentVariables свойства. Если SelectedVariables isempty, read генерирует ошибку.

Можно задать SelectedVariables с помощью массива ячеек из символьных векторов, такого как {'Vibration';'Tacho'}, но имена переменных всегда хранятся как массив строк, ["Vibration";"Tacho"]. Если вы задаете матрицу имен переменных, матрица сглажена к вектор-столбцу.

Число членов, чтобы читать из datastore ансамбля целиком в виде положительного целого числа, которое меньше, чем общее количество членов в ансамбле. По умолчанию, read команда возвращает таблицу с одной строкой, содержащую данные от одного члена ансамбля. Считывать данные от нескольких членов на сингле read операция, набор это свойство к целочисленному значению, больше, чем одно. Например, если ReadSize = 3, затем read возвращает таблицу с тремя строками, где каждая строка содержит данные от различного члена ансамбля. Если меньше, чем ReadSize члены являются непрочитанными, затем read возвращает таблицу со столькими же строк, сколько там остаются члены.

Свойство LastMemberRead datastore ансамбля содержит имена всего чтения файлов во время нового read операция. Таким образом, например, если ReadSize = 3, затем a read операция устанавливает LastMemberRead к вектору строки, содержащему три имен файлов.

Когда вы используете writeToLastMemberRead, задайте данные, чтобы записать как таблица со многими строками, равными ReadSize. writeToLastMemberRead команда обновляет члены, заданные LastMemberRead, запись одной строки таблицы к каждому заданному файлу.

Изменение ReadSize свойство также сбрасывает ансамбль к своему непрочитанному состоянию. Например, предположите, что вы читаете некоторые члены ансамбля по одному (ReadSize = 1), и затем измените ReadSize к 3. Следующее read операция возвращает данные от первых трех членов ансамбля.

Это свойство доступно только для чтения.

Число членов в ансамбле в виде положительного целого числа.

Это свойство доступно только для чтения.

Имя файла последнего чтения члена ансамбля в рабочее пространство MATLAB в виде строки. Когда вы используете read команда, чтобы считать данные из datastore ансамбля, программное обеспечение определяет, какой член ансамбля читать затем, и считывает данные из соответствующего файла. LastMemberRead свойство содержит путь к последний раз файл чтения. Когда datastore ансамбля еще не был считан или был сброшен, LastMemberRead пустая строка.

Когда вы вызываете writeToLastMemberRead чтобы добавить данные назад в datastore ансамбля, эта функция пишет в файл, заданный в LastMemberRead.

По умолчанию, read считывает данные от одного члена ансамбля за один раз (ReadSize свойство datastore ансамбля 1). Когда ReadSize > 1, LastMemberRead массив строк, содержащий пути ко всему чтению файлов в новом read операция.

Это свойство доступно только для чтения.

Список файлов в 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Создание tall array
isPartitionableОпределите, partitionable ли datastore
isShuffleableОпределите, shuffleable ли datastore

Примеры

свернуть все

Создайте 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загрузка, и 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 Ансамбля Файла С Результатами измерений.

Создайте datastore ансамбля файла для данных, хранимых в файлах MATLAB, и сконфигурируйте их с функциями, которые говорят программное обеспечение, как читать из и записать в datastore. (Для получения дополнительной информации о хранилищах данных ансамбля файла конфигурирования, смотрите Datastore Ансамбля Файла С Результатами измерений.)

% 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/BR2021bd_1751886_255755/mlx_to_docbook3/tp35def913/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

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.22648

data2 = read(fensemble)
data2=1×3 table
     label      load     gsMean 
    ________    ____    ________

    "Faulty"     50     -0.22937

rmpath(fullfile(matlabroot,'examples','predmaint','main')) % Reset path

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2018b

Введенный в R2018a