EMD

Эмпирическое разложение режима

Синтаксис

[imf,residual] = emd(X)
[imf,residual,info] = emd(X)
[___] = emd(___,Name,Value)
emd(___)

Описание

пример

[imf,residual] = emd(X) возвращает внутренние функции режима, imf и невязка сигнализируют о residual, соответствующем эмпирическому разложению режима X. Используйте emd, чтобы анализировать и упростить сложные сигналы в конечное число внутренних функций режима, требуемых выполнять гильбертов спектральный анализ.

[imf,residual,info] = emd(X) возвращает дополнительную информацию info на IMFs и остаточном сигнале в диагностических целях.

[___] = emd(___,Name,Value) оценки EMD с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

пример

emd(___) строит исходный сигнал, IMFs и остаточный сигнал как подграфики в той же фигуре.

Примеры

свернуть все

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

Загрузите неустановившиеся данные сигнала с частотой дискретизации fs и визуализируйте смешанный синусоидальный сигнал.

load('sinusoidalSignalExampleData.mat','X','fs')
t = (0:length(X)-1)/fs;
plot(t,X)
xlabel('Time(s)')

Смешанный сигнал содержит синусоидальные волны с различной амплитудой и значениями частоты.

Чтобы создать Гильбертов график спектра, вам нужны внутренние функции режима (IMFs) сигнала. Выполните эмпирическое разложение режима, чтобы вычислить IMFs и невязки сигнала. Поскольку сигнал не сглажен, задайте 'pchip' как метод Interpolation.

[imf,residual,info] = emd(X,'Interpolation','pchip');
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  
      1      |        2     |     0.026352   |  SiftMaxRelativeTolerance
      2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance
      3      |        1     |     0.024838   |  SiftMaxRelativeTolerance
      4      |        2     |      0.05929   |  SiftMaxRelativeTolerance
      5      |        2     |      0.11317   |  SiftMaxRelativeTolerance
      6      |        2     |      0.12599   |  SiftMaxRelativeTolerance
      7      |        2     |      0.13802   |  SiftMaxRelativeTolerance
      8      |        3     |      0.15937   |  SiftMaxRelativeTolerance
      9      |        2     |      0.15923   |  SiftMaxRelativeTolerance
The decomposition stopped because the number of extrema of the residual signal is less than 'MaxNumExtrema'.

Таблица, сгенерированная в командном окне, показывает, что количество отсеивает итерации, относительный допуск, и отсеять критерий остановки каждого сгенерировал МВФ. Эта информация также содержится в info. Можно скрыть таблицу путем добавления пары значение-имя 'Display',0.

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

hht(imf,fs)

Частота по сравнению с графиком временной зависимости является разреженным графиком с вертикальной цветной полосой, указывающей на мгновенную энергию в каждой точке в МВФ. График представляет мгновенный спектр частоты каждого компонента, анализируемого от исходного смешанного сигнала. Три IMFs появляются в графике с отличным изменением в частоте в 1 секунду.

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

Загрузите неустановившиеся данные сигнала и визуализируйте смешанный синусоидальный сигнал.

load('sinusoidalSignalExampleData.mat','X','fs');
plot(X);

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

Выполните эмпирическое разложение режима, чтобы построить внутренние функции режима и невязку сигнала. Поскольку сигнал не сглажен, задайте 'pchip' как метод Interpolation.

emd(X,'Interpolation','pchip');
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  
      1      |        2     |     0.026352   |  SiftMaxRelativeTolerance
      2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance
      3      |        1     |     0.024838   |  SiftMaxRelativeTolerance
      4      |        2     |      0.05929   |  SiftMaxRelativeTolerance
      5      |        2     |      0.11317   |  SiftMaxRelativeTolerance
      6      |        2     |      0.12599   |  SiftMaxRelativeTolerance
      7      |        2     |      0.13802   |  SiftMaxRelativeTolerance
      8      |        3     |      0.15937   |  SiftMaxRelativeTolerance
      9      |        2     |      0.15923   |  SiftMaxRelativeTolerance
The decomposition stopped because the number of extrema of the residual signal is less than 'MaxNumExtrema'.

Сгенерирован интерактивный график с исходным сигналом, первыми 3 IMFs и невязкой. Таблица, сгенерированная в командном окне, показывает, что количество отсеивает итерации, относительный допуск, и отсеять критерий остановки каждого сгенерировал МВФ. Можно скрыть таблицу путем определения Display как 0.

Щелкните правой кнопкой по пробелу в графике открыть окно селектора МВФ. Используйте селектор МВФ, чтобы выборочно просмотреть сгенерированный IMFs, исходный сигнал и невязку.

Выберите IMFs, который будет отображен из списка. Выберите, отобразить ли исходный сигнал и невязку на графике.

Выбранные IMFs теперь отображены на графике.

Используйте график визуализировать отдельные компоненты, анализируемые из исходного сигнала наряду с невязкой. Обратите внимание на то, что невязка вычисляется для общего количества IMFs и не изменяется на основе IMFs, выбранного в окне селектора МВФ.

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

свернуть все

Однородно выбранный сигнал временного интервала, заданный или как векторное или как одно расписание столбца данных.

Аргументы в виде пар имя-значение

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

Пример: 'MaxNumIMF',5

Критерий сходимости типа Коши, заданный как пара, разделенная запятой, состоящая из 'SiftRelativeTolerance' и положительной скалярной величины. SiftRelativeTolerance является одним из критериев остановки отсеивания, то есть, отсеивая остановки, когда текущий относительный допуск является меньше, чем SiftRelativeTolerance.

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

SiftMaxIterations может быть задан с помощью только положительные целые числа.

Максимальное количество IMFs, извлеченного, заданного как пара, разделенная запятой, состоящая из 'MaxNumIMF' и положительного скалярного целого числа. MaxNumIMF является одним из критериев остановки разложения, то есть, остановки разложения, когда количество сгенерированного IMFs равно MaxNumIMF.

MaxNumIMF может быть задан с помощью только положительные целые числа.

Максимальное количество экстремального значения в остаточном сигнале, заданном как пара, разделенная запятой, состоящая из 'MaxNumExtrema' и положительного скалярного целого числа. MaxNumExtrema является одним из критериев остановки разложения, то есть, остановки разложения, когда количество экстремального значения является меньше, чем MaxNumExtrema.

MaxNumExtrema может быть задан с помощью только положительные целые числа.

Сигнал к остаточному энергетическому отношению, заданному как пара, разделенная запятой, состоящая из 'MaxEnergyRatio' и скаляра. MaxEnergyRatio является отношением энергии сигнала в начале отсеивания и средней энергии конверта. MaxEnergyRatio является одним из критериев остановки разложения, то есть, остановки разложения, когда текущее энергетическое отношение больше, чем MaxEnergyRatio.

Метод интерполяции для конструкции конверта, заданной как пара, разделенная запятой, состоящая из 'Interpolation' и или 'spline' или 'pchip'.

Задайте Interpolation как:

  • 'spline', если X является сглаженным сигналом

  • 'pchip', если X является несглаженным сигналом

Метод интерполяции 'spline' использует кубический сплайн, в то время как 'pchip' использует кусочный кубический метод интерполяционного многочлена Эрмита.

Переключите отображение информации в командном окне, заданном как пара, разделенная запятой, состоящая из 'Display' и или 1 или 0. Таблица, сгенерированная в командном окне, показывает, что количество отсеивает итерации, относительный допуск, и отсеять критерий остановки каждого сгенерировал МВФ. Задайте Display как 1, чтобы показать таблицу или 0, чтобы скрыть таблицу.

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

свернуть все

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

imf возвращен как:

  • Матрица, каждым столбцом которой является imf, когда X является вектором

  • Расписание, когда X является одним расписанием столбца данных

Невязка сигнала, возвращенного как вектор-столбец или одно расписание столбца данных. residual представляет фрагмент исходного X сигнала, не анализируемого emd.

residual возвращен как:

  • Вектор-столбец, когда X является вектором.

  • Одно расписание столбца данных, когда X является одним расписанием столбца данных.

Дополнительная информация для диагностики, возвращенной как структура со следующими полями:

  • NumIMF - Количество IMFs извлечено от сигнала

  • NumExtrema - Количество экстремального значения в каждом МВФ

  • NumZeroCrossing - Количество нулевых пересечений для каждого МВФ

  • NumSifting - Количество отсеиваний выполняется для каждого МВФ

  • MeanEnvelopeEnergy - Энергия среднего значения верхнего и более низкого конверта получена в каждом вычислении МВФ

  • RelativeTolerance - Относительный допуск достигнут для каждого МВФ

Алгоритмы

Empirical Mode Decomposition

emd разлагает X сигнала (t) на количество k внутренних функций режима (IMF) и остаточный rk (t) с помощью процесса отсеивания. Краткий обзор процесса отсеивания, перечисленного в [1] и [2], следующие:

  1. Найдите, что локальные максимумы и минимумы для X(t) сигнала создают верхний конверт s + (t) и более низкий конверт s (t).

  2. Вычислите средний конверт для i th итерация, mk,i (t),

    mk,i(t)=12[s+(t)+s(t)]

  3. С ck (t) = X (t) для первой итерации, вычтите средний конверт из остаточного сигнала,

    ck(t)=ck(t)mk,i(t)

    Если ck (t) не совпадает с критериями МВФ, шаги 4 и 5 пропущены. Процедура выполнена с помощью итераций снова на шаге 1 с новым значением ck (t).

  4. Если ck(t) совпадает с критериями МВФ, новая невязка вычисляется. Чтобы обновить остаточный сигнал, вычтите k th МВФ от предыдущего остаточного сигнала,

    rk(t)=rk1(t)ck(t)

  5. Затем начните с шага 1, с помощью невязки, полученной как новый rk сигнала (t), и сохраните ck (t) как внутренняя функция режима.

Для N внутренние функции режима исходный сигнал представлен как,

X(t)=i=1Nci(t)+rN(t)

Для получения дополнительной информации о процессе отсеивания, см. [1] и [2].

SiftRelativeTolerance

SiftRelativeTolerance является критерием остановки типа Коши, предложенным в [4]. Отсеивание остановок, когда текущий относительный допуск является меньше, чем SiftRelativeTolerance. Текущий относительный допуск задан как

RelativeTolerancec(t)предыдущийc(t)текущий2c(t)текущий2.

Поскольку критерий Коши непосредственно не считает количество нулевых пересечений и локальных экстремальных значений, возможно, что IMFs, возвращенные разложением, не удовлетворяют строгое определение внутренней функции режима. В тех случаях можно попытаться уменьшать значение SiftRelativeTolerance от его значения по умолчанию. См. [4] для детального обсуждения критерия остановки. Ссылка также обсуждает преимущества и недостатки настаивания на строго заданном IMFs в эмпирическом разложении режима.

MaxEnergyRatio

Энергетическое отношение является отношением энергии сигнала в начале отсеивания и средней энергии конверта [3]. Разложение останавливается, когда текущее энергетическое отношение больше, чем MaxEnergyRatio. Для k IMFs EnergyRatio задан как

EnergyRatio10журнал10(X(t)2rk(t)2).

Ссылки

[1] Хуан, Норден Э., Чжен Шен, Стивен Р. Лонг, Манли К. Ву, Син Х. Ши, Куэнэн Чжен, Най-Чюань Янь, Ши Чао Туньг и Генри Х. Лю. "Эмпирическое разложение режима и Гильбертов спектр для нелинейного и неустановившегося анализа временных рядов". Продолжения Королевского общества Лондона. Серии А: Математические, Физические и Технические науки. Издание 454, 1998, стр 903–995.

[2] Вытекание струей, G., Патрик Фландрен и Паулу Гонзальвес. "На эмпирическом разложении режима и его алгоритмах". Семинар IEEE-EURASIP по Нелинейной Обработке сигналов и Обработке изображений 2003. NSIP-03. Градо, Италия. 8–11.

[3] Rato, R.T., Мануэль Ортигуейра и Арнальдо Батиста. "На HHT, его проблемах и некоторых решениях". Механические Системы и Издание 22, 2008 Обработки сигналов, стр 1374–1394.

[4] Ван, Банда, Сиань-Yao Чен, Литий Клыка Цяо, Жаохуа Ву и Норден Хуан. "На Внутренней Функции Режима". Усовершенствования в Адаптивном Анализе данных. Издание 2, Номер 3, 2010, стр 277–293.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

Введенный в R2018a