Преобразование Гильберта – Хуанга: мгновенная частота

Я реализую «Разложение эмпирического режима» на Java. Следующим шагом является преобразование Гильберта-Хуанга, и мне нужно найти, как получить «мгновенную частоту». Кто-то знает, как его получить?

Используя метод EMD, любой сложный набор данных может быть разложен на конечное и часто небольшое количество компонентов, которые представляют собой набор функций внутреннего режима (IMF). Следующим шагом является преобразование Гильберта-Хуанга. Исходя из этого, я вычисляю фазу сигнала, и после того, как я должен вычислить мгновенную частоту, я ищу в коде Matlab, как в этой ссылке: http://read.pudn.com/downloads100/sourcecode/math/408870/emd/instfreq/archive/ifreq.m__.htm

но я этого не понимаю.

Спасибо


person user3582433    schedule 28.04.2014    source источник
comment
Пожалуйста, уточните, чего вы хотите достичь и что вы пытались достичь.   -  person Jeroen Kransen    schedule 28.04.2014
comment
Готовы ли вы поделиться своим кодом Java, чтобы другие могли извлечь выгоду из его реализации?   -  person angryip    schedule 13.08.2017


Ответы (3)


Частота экземпляров может быть рассчитана в Python с помощью

def hilb(s, unwrap=False):
    from scipy.signal import hilbert
    H = hilbert(s)
    amp = np.abs(H)
    phase = np.arctan2(H.imag, H.real)
    if unwrap: phase = np.unwrap(phase)
    return amp, phase

inst_amp, phase = hilb(imf, unwrap=True)
inst_freq = np.diff(phase)
person Annie Liang li    schedule 27.10.2017
comment
Почему этот ответ не выбран как лучший? - person Emil; 26.11.2019
comment
Привет, я использовал ваш код, но получил значения nan в гильбертах, в чем может быть проблема? - person poshita singh; 24.02.2020

Преобразование Гильберта-Хуанга представляет собой комбинацию разложения по эмпирическим модам (EMD) и преобразования Гильберта.

Во-первых, EMD — это алгоритм, который дает вам функции внутреннего режима (IMF).

Затем к каждому IMF применяется преобразование Гильберта.

Из IMF преобразование Гильберта дает сигнал с задержкой по фазе pi/2, из которого можно вычислить фазу и производную фазы по времени, которая пропорциональна мгновенной частоте.

Вы найдете интересные учебные пособия и подробную информацию об алгоритмических вариантах EMD на этой странице: http://perso.ens-lyon.fr/patrick.flandrin/emd.html

person astooooooo    schedule 18.01.2016

Вы можете обрабатывать данные сигнала с помощью преобразования Гильберта-Хуанга (HHT), которое представляет собой комбинацию разложения по эмпирическим модам (EMD) и анализа спектра Гильберта (HSA) с помощью Matlab или Python. В Matlab или Python есть метод HHT, который вы можете использовать напрямую, и вам не нужно вычислять мгновенную частоту (IF) самостоятельно.

Например, с Матлабом:

Во-первых, вы можете получить IMF и невязку, внедрив emd в сигнальные данные, код такой: [IMF,остатка,информация] = emd(signal,'Interpolation','pchip', 'Display', 0);

Затем IF, то есть IMFINSF, может быть получен с помощью hht(IMF, fs), где fs — частота дискретизации [P,F,T,IMFINSF,IMFINSE]=hht(IMF,fs);

Кроме того, в Python также есть некоторые инструменты и методы.

person Ocean_Duan    schedule 27.06.2019
comment
Можете ли вы поделиться инструментами Python. - person poshita singh; 24.02.2020