Документация Engee

emd

Разложение сигнала на эмпирические моды.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • imf,residual = emd(x) — возвращает функции imf разложения на внутренние моды (Intrinsic Mode Function, IMF) и остаточный сигнал residual, соответствующий разложению сигнала x на эмпирические моды. Используйте функцию emd для разложения и упрощения сложных сигналов на конечное число функций разложения на внутренние моды, необходимых для выполнения спектрального анализа Гильберта.

  • imf,residual,info = emd(x) — возвращает дополнительную информацию info об IMF и остаточном сигнале для диагностических целей.

  • ___ = emd(___,Name,Value) — выполняет разложение сигнала на эмпирические моды с дополнительными параметрами, заданными одним или несколькими аргументами типа Name,Value.

  • emd(___;out=:plot) — строит график исходного сигнала, IMF и остаточного сигнала в виде отдельных графиков на одном рисунке.

Аргументы

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

# x — сигнал во временной области
вектор

Details

Сигнал во временной области, заданный как вектор вещественных значений.

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в виде Name,Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения.

Используйте запятые для разделения имени и значения, а Name заключите в кавычки.

# SiftRelativeTolerance — критерий сходимости Коши
0.2 (по умолчанию) | положительный скаляр

Details

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

# SiftMaxIterations — максимальное количество итераций отсеивания
100 (по умолчанию) | положительный целочисленный скаляр

Details

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

Аргумент SiftMaxIterations может быть задан только положительными целыми числами.

# MaxNumIMF — максимальное количество извлеченных IMF
10 (по умолчанию) | положительный целочисленный скаляр

Details

Максимальное количество извлеченных IMF, заданное как пара, разделенная запятой, состоящая из "MaxNumIMF" и положительного целочисленного скаляра. Аргумент MaxNumIMF является одним из критериев остановки разложения, то есть разложение останавливается, когда количество сгенерированных IMF равно значению MaxNumIMF.

Аргумент MaxNumIMF может быть задан только положительными целыми числами.

# MaxNumExtrema — максимальное количество экстремумов в остаточном сигнале
1 (по умолчанию) | положительный целочисленный скаляр

Details

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

Аргумент MaxNumExtrema может быть задан только положительными целыми числами.

# MaxEnergyRatio — отношение энергии сигнала к остаточной энергии
20 (по умолчанию) | скаляр

Details

Отношение энергии сигнала к остаточной энергии, заданное как пара, разделенная запятой, состоящая из "MaxEnergyRatio" и скаляра. Аргумент MaxEnergyRatio — это отношение энергии сигнала в начале отсеивания к средней энергии огибающей. Аргумент MaxEnergyRatio является одним из критериев остановки разложения, то есть разложение останавливается, когда текущее отношение энергии больше значения MaxEnergyRatio. Для получения дополнительной информации см. раздел Отношение энергий.

# Interpolation — метод интерполяции для построения огибающей
"spline" (по умолчанию) | "pchip"

Details

Метод интерполяции для построения огибающей, заданный как пара, разделенная запятой, состоящая из "Interpolation" и либо "spline", либо "pchip".

Задайте для аргумента Interpolation одно из значений:

  • "spline", если x — гладкий сигнал;

  • "pchip", если x — негладкий сигнал.

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

# Display — переключение отображения информации в командном окне
0 (по умолчанию) | 1

Details

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

# out — тип выходных данных
:none (по умолчанию) | :plot

Details

Тип выходных данных:

  • :none — функция возвращает данные;

  • :plot — функция возвращает график.

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

# imf — функция разложения на внутренние моды
матрица

Details

Функция разложения на внутренние моды (Intrinsic Mode Function, IMF), возвращаемая в виде матрицы. Каждая IMF представляет собой сигнал с амплитудной и частотной модуляцией, имеющий положительные и медленно изменяющиеся огибающие. Для спектрального анализа сигнала можно применить преобразование Гильберта — Хуанга к его IMF. Подробнее см. в разделе Функции разложения на внутренние моды.

Аргумент imf возвращается в виде матрицы, каждый столбец которой является imf, если x — вектор.

# residual — остаточный сигнал
вектор-столбец

Details

Остаточный сигнал, возвращаемый в виде вектора-столбца. Аргумент residual представляет собой часть исходного сигнала x, не разложенного функцией emd.

Аргумент residual возвращается в виде вектора-столбца, если x — вектор.

# info — дополнительная информация для диагностики
структура

Details

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

  • NumIMF — количество извлеченных IMF;

    NumIMF — вектор от до , где — количество IMF. Если IMF не извлечены, NumIMF пуст;

  • NumExtrema — количество экстремумов в каждой IMF;

    NumExtrema — вектор, длина которого равна количеству IMF. -й элемент аргумента NumExtrema — это количество экстремумов, найденных в -й IMF. Если IMF не извлечены, NumExtrema пуст;

  • NumZerocrossing — количество пересечений нуля в каждой IMF;

    Количество пересечений нуля в каждой IMF. NumZerocrossing — вектор, длина которого равна количеству IMF. -й элемент аргумента NumZerocrossing — это количество пересечений нуля в -й IMF. Если IMF не извлечены, NumZerocrossing пуст;

  • NumSifting — количество итераций отсеивания, используемых для извлечения каждой IMF;

    NumSifting — вектор, длина которого равна количеству IMF. -й элемент аргумента NumSifting — это количество итераций отсеивания, используемых при извлечении -й IMF. Если IMF не извлечены, NumSifting пуст;

  • MeanEnvelopeEnergy — энергия среднего значения верхней и нижней огибающих, полученных для каждой IMF;

    Если UE — верхняя огибающая, а LE — нижняя, то значение аргумента MeanEnvelopeEnergy равно mean(((LE+UE)/2).^2). MeanEnvelopeEnergy — вектор, длина которого равна количеству IMF. -й элемент аргумента MeanEnvelopeEnergy — это средняя энергия огибающей для -й IMF. Если IMF не извлечены, MeanEnvelopeEnergy пуст;

  • RelativeTolerance — итоговый относительный допуск остатка для каждой IMF;

    Относительный допуск определяется как отношение квадрата второй нормы разности между остатком от предыдущего этапа отсеивания и остатком от текущего этапа отсеивания к квадрату второй нормы остатка от -го шага отсеивания. Процесс отсеивания останавливается, когда значение RelativeTolerance меньше значения SiftRelativeTolerance. Для получения дополнительной информации см. раздел Относительный допуск отсеивания. RelativeTolerance — это вектор, длина которого равна количеству IMF. -й элемент аргумента RelativeTolerance — это итоговый относительный допуск, полученная для -й IMF. Если IMF не извлечены, RelativeTolerance пуст.

Примеры

Пересечения нуля и экстремумы в функции разложения на внутренние моды синусоиды

Details

Данное тригонометрическое тождество представляет два разных взгляда на один и тот же скалярный сигнал:

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

import EngeeDSP.Functions: norm

t = 0:1e-3:10
omega1 = 2π*100
omega2 = 2π*20
s = 0.25*cos.((omega1-omega2)*t) + 2.5*cos.(omega1*t) + 0.25*cos.((omega1+omega2)*t)
z = (2 .+ cos.(omega2/2*t).^2) .* cos.(omega1*t)

norm(s-z,Inf)
3.2740476996195866e-13

Построим графики синусоид и выберем интервал в 1 секунду, начиная с 2 секунд.

plot(t, [s z],
     xlim = (2, 3),
     xlabel = "Time (s)",
     ylabel = "Signal")

emd 1

Используем функцию emd для вычисления функций разложения на внутренние моды (Intrinsic Mode Function, IMF) сигнала и дополнительной диагностической информации. По умолчанию функция выводит данные, в которых указывается количество итераций отсеивания, относительная погрешность и критерий остановки отсеивания для каждой IMF. Разложение на эмпирические моды рассматривает сигнал как z.

import EngeeDSP.Functions: emd

imf, _, info = emd(s)

Количество пересечений нуля и локальных экстремумов отличается не более чем на единицу. Это удовлетворяет необходимому условию для того, чтобы сигнал являлся IMF.

info["NumZerocrossing"] - info["NumExtrema"]
1-element Vector{Float64}:
 1.0

Построим график IMF и выберем интервал в 0.5 секунды, начиная с 2 секунд. IMF представляет собой сигнал AM, поскольку функция emd рассматривает этот сигнал как амплитудно-модулированный.

plot(t, imf,
     xlim = (2, 2.5),
     xlabel = "Time (s)",
     ylabel = "IMF")

emd 2

Дополнительно

Метод разложения сигнала на эмпирические моды

Details

Алгоритм разложения сигнала на эмпирические моды (Empirical Mode Decomposition, EMD) разлагает сигнал на функции разложения на внутренние моды (Intrinsic Mode Function, IMF) и остаток в итеративном процессе. Основной компонент алгоритма заключается в отсеивании функции для получения новой функции :

  • Сначала найти локальные минимумы и максимумы функции ;

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

  • Вычесть среднее из , чтобы получить остаток: .

Вкратце, разложение выглядит следующим образом.

  1. Для начала пусть , где — начальный сигнал, и пусть .

  2. Перед отсеиванием проверить :

    1. Найти общее количество локальных экстремумов функции .

    2. Найти отношение энергий для функции (см. раздел Отношение энергий).

  3. Если MaxEnergyRatio, или MaxNumExtrema, или количество IMF MaxNumIMF, то остановить разложение.

  4. Пусть .

  5. Отсеять , чтобы получить .

  6. Проверить :

    1. Найти относительный допуск функции (см. раздел Относительный допуск отсеивания).

    2. Получить текущий номер итерации отсеивания .

  7. Если SiftRelativeTolerance или SiftMaxIterations), то остановить отсеивание. Найдена IMF: . Иначе, пусть и переход к шагу 5.

  8. Пусть .

  9. Пусть . Возврат к шагу 2.

Дополнительную информацию см. в [1] и [3].

Функции разложения на внутренние моды

Details

Алгоритм EMD разлагает сигнал на внутренние моды и остаточную функцию посредством итеративного процесса отсеивания:

Когда Хуанг и др. [1] впервые представили IMF, она была определена как функция с двумя характеристиками:

  • количество локальных экстремумов — общее количество локальных минимумов и локальных максимумов — и количество пересечений нуля отличаются не более чем на единицу;

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

Однако, как отмечено в [4], отсеивание до получения строгой IMF может привести к IMF, не имеющим физического смысла. В частности, отсеивание до тех пор, пока количество пересечений нуля и локальных экстремумов не будет отличаться менее чем на единицу, может привести к IMF, подобным чистым тонам, другими словами к функциям, очень похожим на те, которые были бы получены при проекции на базис Фурье. Именно такой ситуации стремится избежать алгоритм EMD, предпочитая компоненты с AM-FM модуляцией из-за их физического смысла.

В ссылке [4] предлагаются варианты получения физически значимых результатов. Функция emd ослабляет исходное определение IMF, используя Относительный допуск отсеивания, критерий сходимости Коши. Функция emd итеративно извлекает естественные AM-FM моды. Сгенерированные IMF могут не удовлетворять критериям локального экстремума и пересечения нуля. См. пример Пересечения нуля и экстремумы в функции разложения на внутренние моды синусоиды.

Относительный допуск отсеивания

Details

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

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

Отношение энергий

Details

Отношение энергий — это отношение энергии сигнала в начале отсеивания к средней энергии огибающей [2]. Разложение прекращается, когда текущее отношение энергий больше, чем значение аргумента MaxEnergyRatio. Для -й IMF отношение энергий определяется как

Литература

  1. Huang, Norden E., Zheng Shen, Steven R. Long, Manli C. Wu, Hsing H. Shih, Quanan Zheng, Nai-Chyuan Yen, Chi Chao Tung, and Henry H. Liu. «The Empirical Mode Decomposition and the Hilbert Spectrum for Nonlinear and Non-Stationary Time Series Analysis.» Proceedings of the Royal Society of London. Series A: Mathematical, Physical and Engineering Sciences 454, no. 1971 (March 8, 1998): 903–995. https://doi.org/10.1098/rspa.1998.0193.

  2. Rato, R.T., M.D. Ortigueira, and A.G. Batista. «On the HHT, Its Problems, and Some Solutions.» Mechanical Systems and Signal Processing 22, no. 6 (August 2008): 1374–1394. https://doi.org/10.1016/j.ymssp.2007.11.028.

  3. Rilling, Gabriel, Patrick Flandrin, and Paulo Gonçalves. «On Empirical Mode Decomposition and Its Algorithms.» IEEE-EURASIP Workshop on Nonlinear Signal and Image Processing 2003. NSIP-03. Grado, Italy. 8–11.

  4. Wang, Gang, Xian-Yao Chen, Fang-Li Qiao, Zhaohua Wu, and Norden E. Huang. «On Intrinsic Mode Function.» Advances in Adaptive Data Analysis 02, no. 03 (July 2010): 277–293. https://doi.org/10.1142/S1793536910000549.