emd
Разложение сигнала на эмпирические моды.
| Библиотека |
|
Синтаксис
Вызов функции
-
imf,residual = emd(x)— возвращает функцииimfразложения на внутренние моды (Intrinsic Mode Function, IMF) и остаточный сигналresidual, соответствующий разложению сигналаxна эмпирические моды. Используйте функциюemdдля разложения и упрощения сложных сигналов на конечное число функций разложения на внутренние моды, необходимых для выполнения спектрального анализа Гильберта.
-
___ = 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" использует кубические сплайны, а "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 — вектор.
#
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 для вычисления функций разложения на внутренние моды (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")
Дополнительно
Метод разложения сигнала на эмпирические моды
Details
Алгоритм разложения сигнала на эмпирические моды (Empirical Mode Decomposition, EMD) разлагает сигнал на функции разложения на внутренние моды (Intrinsic Mode Function, IMF) и остаток в итеративном процессе. Основной компонент алгоритма заключается в отсеивании функции для получения новой функции :
-
Сначала найти локальные минимумы и максимумы функции ;
-
Затем использовать локальные экстремумы для построения нижней и верхней огибающих и соответственно для функции . Сформировать среднее значение огибающих ;
-
Вычесть среднее из , чтобы получить остаток: .
Вкратце, разложение выглядит следующим образом.
-
Для начала пусть , где — начальный сигнал, и пусть .
-
Перед отсеиванием проверить :
-
Найти общее количество локальных экстремумов функции .
-
Найти отношение энергий для функции (см. раздел Отношение энергий).
-
-
Если
MaxEnergyRatio, илиMaxNumExtrema, или количество IMFMaxNumIMF, то остановить разложение. -
Пусть .
-
Отсеять , чтобы получить .
-
Проверить :
-
Найти относительный допуск функции (см. раздел Относительный допуск отсеивания).
-
Получить текущий номер итерации отсеивания .
-
-
Если
SiftRelativeToleranceилиSiftMaxIterations), то остановить отсеивание. Найдена IMF: . Иначе, пусть и переход к шагу 5. -
Пусть .
-
Пусть . Возврат к шагу 2.
Функции разложения на внутренние моды
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 отношение энергий определяется как
Литература
-
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.
-
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.
-
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.
-
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.