monotonicity

Определите количество монотонного тренда в индикаторах состояния

Описание

пример

Y = monotonicity(X) возвращает монотонность пожизненных данных X. Используйте monotonicity чтобы определить количество монотонного тренда в индикаторах состояния как, система развивается к отказу. Значения Y лежите в диапазоне от 0 до 1, где Y 1 если X является совершенно монотонным и 0 если X является немонотонным.

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

пример

Y = monotonicity(X,lifetimeVar) возвращает монотонность пожизненных данных X использование пожизненной переменной lifetimeVar.

пример

Y = monotonicity(X,lifetimeVar,dataVar) возвращает монотонность пожизненных данных X использование переменных данных задано dataVar.

пример

Y = monotonicity(X,lifetimeVar,dataVar,memberVar) возвращает монотонность пожизненных данных X использование пожизненной переменной lifetimeVar, переменные данных заданы dataVar, и переменная memberVar члена.

пример

Y = monotonicity(___,Name,Value) оценивает монотонность с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы. Можно использовать этот синтаксис с любой из предыдущих комбинаций входных аргументов.

пример

monotonicity(___) без выходных аргументов строит столбчатую диаграмму оцениваемых значений монотонности.

Примеры

свернуть все

В этом примере рассмотрите пожизненные данные 10 идентичных машин следующими 6 потенциальными предвещающими параметрами-постоянный, линейный, квадратичный, кубический, логарифмический, и периодический. Набор данных machineDataCellArray.mat содержит C, который является 1x10 массив ячеек матриц, где каждым элементом массива ячеек является матрица, которая содержит пожизненные данные машины. Для каждой матрицы в массиве ячеек первый столбец содержит время, в то время как другие столбцы содержат переменные данных.

Загрузите пожизненные данные и визуализируйте их по времени.

load('machineDataCellArray.mat','C')
display(C)
C=1×10 cell array
  Columns 1 through 4

    {219x7 double}    {189x7 double}    {202x7 double}    {199x7 double}

  Columns 5 through 8

    {229x7 double}    {184x7 double}    {224x7 double}    {208x7 double}

  Columns 9 through 10

    {181x7 double}    {197x7 double}

for k = 1:length(C)
    plot(C{k}(:,1), C{k}(:,2:end));
    hold on;
end

Figure contains an axes object. The axes object contains 60 objects of type line.

Наблюдайте 6, отличающиеся постоянный индикаторами состояния, линейный, квадратичный, кубический, логарифмический, и периодический – для всех 10 машин на графике.

Визуализируйте монотонность потенциальных предвещающих функций.

monotonicity(C)

Figure contains an axes object. The axes object with title Monotonicity Metric contains an object of type bar.

Из графика гистограммы заметьте что функции Var2, Var4 и Var5 займите место лучше, чем другие. Следовательно, эти функции более подходят для остающихся предсказаний срока полезного использования, поскольку они - лучшие индикаторы здоровья машины.

В этом примере рассмотрите пожизненные данные 10 идентичных машин следующими 6 потенциальными предвещающими параметрами-постоянный, линейный, квадратичный, кубический, логарифмический, и периодический. Набор данных machineDataTable.mat содержит T, который является 1x10 массив ячеек таблиц, где каждый элемент массива ячеек содержит таблицу пожизненных данных для машины.

Загрузите и отобразите данные.

load('machineDataTable.mat','T');
display(T)
T=1×10 cell array
  Columns 1 through 4

    {219x7 table}    {189x7 table}    {202x7 table}    {199x7 table}

  Columns 5 through 8

    {229x7 table}    {184x7 table}    {224x7 table}    {208x7 table}

  Columns 9 through 10

    {181x7 table}    {197x7 table}

head(T{1},2)
ans=2×7 table
    Time    Constant    Linear    Quadratic    Cubic     Logarithmic    Periodic
    ____    ________    ______    _________    ______    ___________    ________

       0     3.2029     11.203     7.7029      3.8829      2.2517        0.2029 
    0.05     2.8135     10.763     7.2637      3.6006      1.8579       0.12251 

Обратите внимание на то, что каждая таблица в массиве ячеек содержит пожизненную переменную 'Time' и переменные данных 'Constant', 'Linear', 'Quadratic', 'Cubic', 'Logarithmic', и 'Periodic'.

Вычислите монотонность с помощью метода порядковой корреляции Копьеносца с Time как пожизненная переменная.

Y = monotonicity(T,'Time','Method','rank')
Y=1×6 table
    Constant    Linear    Quadratic     Cubic     Logarithmic    Periodic
    ________    ______    _________    _______    ___________    ________

    0.069487      1        0.17777     0.97993      0.99957      0.059208

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

Рассмотрите пожизненные данные 4 машин. Каждая машина имеет 4 кода отказа для потенциальных индикаторов состояния-напряжение, текущее, и степень. monotonicityEnsemble.zip набор 4 файлов, где каждый файл содержит расписание пожизненных данных для каждой машины - tbl1.mat, tbl2.mat, tbl3.mat, и tbl4.mat. Можно также использовать файлы, содержащие данные для нескольких машин. Для каждого расписания организация данных следующие:

Когда вы выполняете вычисления на длинных массивах, MATLAB® использует любого параллельный пул (значение по умолчанию, если у вас есть Parallel Computing Toolbox™), или локальный сеанс работы с MATLAB. Чтобы запустить пример с помощью локального сеанса работы с MATLAB, измените глобальную среду выполнения при помощи mapreducer функция.

mapreducer(0)

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

unzip monotonicityEnsemble.zip;
ens = fileEnsembleDatastore(pwd,'.mat');
ens.DataVariables = {'Voltage','Current','Power','FaultCode','Machine'};
% Make sure that the function for reading data is on path
addpath(fullfile(matlabroot,'examples','predmaint','main')) 
ens.ReadFcn = @readtable_data;
ens.SelectedVariables = {'Voltage','Current','Power','FaultCode','Machine'};

Визуализируйте монотонность потенциальных предвещающих функций с 'Machine'как переменная члена и группа пожизненные данные 'FaultCode'. Группировка пожизненных данных гарантирует тот monotonicity вычисляет метрику для каждого кода отказа отдельно.

monotonicity(ens,'MemberVariable','Machine','GroupBy','FaultCode');
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.6 sec
Evaluation completed in 1.1 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.14 sec
Evaluation completed in 0.32 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.36 sec
Evaluation completed in 0.4 sec

Figure contains an axes object. The axes object with title Monotonicity Metric contains 4 objects of type bar. These objects represent FaultCode: 1, FaultCode: 2, FaultCode: 3, FaultCode: 4.

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

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

Входные параметры

свернуть все

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

Если X

  • массив ячеек матриц или таблиц, функция принимает, что каждая матрица или таблица содержат столбцы пожизненных данных для системы. Каждый столбец каждой матрицы или таблица, кроме первого столбца, содержат данные для предвещающей переменной. 'Var1','Var2', ... может использоваться, чтобы относиться к столбцам матрицы, которые содержат пожизненные данные. Например, файл machineDataCellArray.mat содержит 1 10 массив ячеек матриц C, где каждая из этих 10 матриц содержит данные для конкретной машины.

  • таблица или расписание, функция принимает, что каждый столбец, кроме первого, содержит столбцы пожизненных данных. Имена табличной переменной могут использоваться, чтобы обратиться к столбцам, которые содержат пожизненные данные. Если lifetimeVar не задан когда X таблица, затем столбец First Data используется в качестве пожизненной переменной.

  • fileEnsembleDatastore возразите, задайте переменные данных dataVar и переменные memberVar члена использоваться. Если lifetimeVar не задан, затем столбец First Data используется в качестве пожизненной переменной для расчета.

Каждый числовой член в X имеет тип double.

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

Для массива ячеек матриц, значение 'Time' может использоваться, чтобы обратиться к первому столбцу каждой матрицы, которая принята, чтобы содержать пожизненную переменную. Например, файл machineDataCellArray.mat содержит массив ячеек C, где первый столбец в каждой матрице содержит пожизненную переменную, в то время как другие столбцы содержат переменные данных.

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

Если X

  • fileEnsembleDatastore объект, значение dataVar заменяет DataVariables свойство ансамбля.

  • массив ячеек матриц, значение 'Time' может использоваться, чтобы обратиться к первому столбцу каждой матрицы, то есть, пожизненной переменной lifetimeVar. 'Var1','Var2', ... может использоваться, чтобы относиться к другим столбцам матрицы, которые содержат пожизненные данные. Например, файл machineDataCellArray.mat содержит массив ячеек C где первый столбец в каждой матрице содержит пожизненную переменную. Другие столбцы в массиве ячеек C содержите переменные данных.

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

Значения dataVar должен быть допустимый ансамбль или имена табличной переменной. Если dataVar не задан, расчет включает все столбцы данных кроме того, заданного в lifetimeVar. Например, предположите, что каждая запись в массиве ячеек является таблицей с переменными ABC, и D. Установка dataVar к ["A","D"] использование только A и D для расчета, в то время как C и D проигнорированы.

Переменная члена в виде строки или вектора символов. Используйте memberVar задавать переменную для идентификации систем или машин в пожизненных данных X. Например, в fileEnsembleDatastore объект, пятая колонна в каждом расписании содержит числа, которые идентифицируют данные из конкретной машины. Имя столбца соответствует переменной memberVar члена.

memberVar проигнорирован когда X задан как массив ячеек матриц или таблиц.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: ...,'Method','rank'

Пожизненная переменная в виде разделенной запятой пары, состоящей из 'LifeTimeVariable'и или строка или вектор символов. Если 'LifeTimeVariable'не задан, затем столбец First Data используется.

'LifeTimeVariable'эквивалентно входному параметру lifetimeVar.

Переменные данных в виде разделенной запятой пары, состоящей из 'DataVariables'и или массив строк, вектор символов или массив ячеек из символьных векторов.

'DataVariables' 'эквивалентно входному параметру dataVar.

Переменные члена в виде разделенной запятой пары, состоящей из 'MemberVariable'и или строка или вектор символов.

Членская переменная'эквивалентно входному параметру memberVar.

Группировка критерия в виде разделенной запятой пары, состоящей из 'GroupBy'и или строка или вектор символов. Используйте 'GroupBy'чтобы задать переменные для группировки пожизненных данных X условиями работы.

Функция вычисляет метрику отдельно для каждой группы, которая следует из применения критерия, такого как условие отказа, заданное 'GroupBy'. Например, в fileEnsembleDatastore объект ens, четвертый столбец в каждом расписании в ens содержит переменную 'FaultCode'. Метрика вычисляется для каждой машины путем группировки данных 'FaultCode'.

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

Размер окна скользящего среднего значения в центре для усреднения данных в виде разделенной запятой пары, состоящей из 'WindowSize'и или скалярный или двухэлементный вектор. Фильтр Savitzky-Golay используется для усреднения данных. Для получения дополнительной информации смотрите smoothdata.

Если 'WindowSize'не задан, длина окна автоматически определяется из пожизненных данных X использование smoothdata(X,'sgolay'). Установите 'WindowSize'к 0, чтобы выключить усреднение данных.

Метод, чтобы вычислить монотонность в виде разделенной запятой пары, состоящей из 'Method'и любой 'sign' или 'rank'.

  • 'sign', Используйте формулу знака.

  • 'rank', Используйте формулу порядковой корреляции Копьеносца.

Для получения дополнительной информации см. Алгоритмы.

Выходные аргументы

свернуть все

Монотонность пожизненных данных, возвращенных как вектор или таблица.

monotonicity характеризует тренд функции, когда система развивается к отказу. Когда система прогрессивно становится ближе к отказу, подходящий индикатор состояния обычно имеет монотонный тренд. С другой стороны любой функцией с немонотонным трендом является менее подходящий индикатор состояния. Значения Y лежите в диапазоне от 0 до 1.

  • Y 1 если X является совершенно монотонным.

  • Y 0 если X является совершенно немонотонным.

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

Когда 'GroupBy'не задан, затем Y возвращен как таблица одной строки или вектор-строка. С другой стороны, когда 'GroupBy'задан, затем каждая строка в Y соответствует одной группе.

Ограничения

  • Когда X длинная таблица или длинное расписание, monotonicity тем не менее, загружает полный массив в память с помощью gather. Если доступная память является несоответствующей, то monotonicity возвращает ошибку.

Алгоритмы

свернуть все

Монотонность вычисляется следующими двумя способами, как задано 'Method'опция.

Формула знака или метод знака

Когда вы задаете 'Method'как 'sign', расчет монотонности использует эту формулу:

monotonicity = 1Mj=1M|k=1Nj1sgn(xj(k+1)xj(k))Nj1|

где xj представляет вектор из измерений функции на jth система, M является количеством систем, проверенных, и Nj является количеством измерений на jth система.

Содействующий метод порядковой корреляции копьеносца

Когда вы задаете 'Method'как 'rank', расчет монотонности использует эту формулу:

monotonicity = 1Mj=1M|corr(rank(xj),ранг(tj))|

где M является количеством проверенных систем, и tj является вектором из моментов времени, соответствующих вектору измерения xj.

Ссылки

[1] Плоскодонная рыбачья лодка, J. и Дж. В. Хайнз. "Идентифицируя оптимальные предвещающие параметры из данных: подход генетических алгоритмов". В продолжениях ежегодной конференции предзнаменований и медицинского общества управления. 2009.

[2] Плоскодонная рыбачья лодка, J. "Объединяя источники данных, чтобы предсказать остающийся срок полезного использования - автоматизированный метод, чтобы идентифицировать параметры предзнаменований". Ph.D. Тезис. Университет Теннесси, Ноксвилла, TN, 2010.

[3] Леи, Y. Интеллектуальная диагностика отказа и остающееся предсказание срока полезного использования вращающегося машинного оборудования. Сиань, Китай: Сиань университетское издательство Цзяотуна, 2017.

[4] Lofti, S., Дж. Б. Али, Э. Бечхоефер и М. Бенбузид. "Ветряной двигатель высокоскоростной медицинский прогноз подшипников вала через спектральные Выведенные из эксцесса индексы и SVR". Прикладное Издание 120, 2017 Акустики, стр 1-8.

Введенный в R2018b