exponenta event banner

hht

Преобразование Гильберта-Хуана

Описание

пример

hs = hht(imf) возвращает спектр Гильберта hs сигнала, определяемого функциями внутреннего режима imf. hs полезен для анализа сигналов, которые содержат смесь сигналов, спектральное содержание которых изменяется во времени. Использовать hht для выполнения спектрального анализа Гильберта по сигналам для идентификации локализованных признаков.

пример

hs = hht(imf,fs) возвращает спектр Гильберта hs сигнала, дискретизированного со скоростью fs.

пример

[hs,f,t] = hht(___) возвращает вектор частоты f и вектор времени t в дополнение к hs. Эти выходные аргументы могут использоваться с любым из предыдущих входных синтаксисов.

пример

[hs,f,t,imfinsf,imfinse] = hht(___) также возвращает мгновенные частоты imfinsf и мгновенные энергии imfinse функций внутреннего режима для диагностики сигналов.

пример

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

пример

hht(___) без выходных аргументов строит график спектра Гильберта в текущем окне фигуры. Этот синтаксис можно использовать с любым из входных аргументов в предыдущих синтаксисах.

hht(___,freqlocation) строит график спектра Гильберта с опциональным freqlocation для указания местоположения частотной оси. Частота по умолчанию представлена на оси Y.

Примеры

свернуть все

Генерировать квадратичную чирпу с гауссовой модуляцией. Укажите частоту дискретизации 2 кГц и длительность сигнала 2 секунды.

fs = 2000;
t = 0:1/fs:2-1/fs;
q = chirp(t-2,4,1/2,6,'quadratic',100,'convex').*exp(-4*(t-1).^2);
plot(t,q)

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

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

emd(q)

Figure contains 5 axes. Axes 1 contains an object of type line. This object represents data. Axes 2 contains an object of type line. This object represents data. Axes 3 contains an object of type line. This object represents data. Axes 4 contains an object of type line. This object represents data. Axes 5 contains an object of type line. This object represents data.

Вычислите IMFs сигнала. Используйте 'Display' пара «имя-значение» для вывода таблицы, показывающей количество итераций просеивания, относительный допуск и критерий остановки отсеивания для каждого МВФ.

imf = emd(q,'Display',1);
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  
      1      |        2     |    0.0063952   |  SiftMaxRelativeTolerance
      2      |        2     |       0.1007   |  SiftMaxRelativeTolerance
      3      |        2     |      0.01189   |  SiftMaxRelativeTolerance
      4      |        2     |    0.0075124   |  SiftMaxRelativeTolerance
Decomposition stopped because the number of extrema in the residual signal is less than the 'MaxNumExtrema' value.

Используйте вычисленные ЧС для построения графика гильбертова спектра квадратичного чирпа. Ограничьте диапазон частот от 0 Гц до 20 Гц.

hht(imf,fs,'FrequencyLimits',[0 20])

Figure contains an axes. The axes with title Hilbert Spectrum contains 4 objects of type patch.

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

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

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

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

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

[imf,residual,info] = emd(X,'Interpolation','pchip');

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

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

hht(imf,fs)

Figure contains an axes. The axes with title Hilbert Spectrum contains 9 objects of type patch.

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

Загрузите файл, содержащий аудиоданные тихоокеанского синего кита, дискретизированные на частоте 4 кГц. Файл из библиотеки вокализаций животных, поддерживаемой Программой исследований биоакустики Корнеллского университета. Шкала времени в данных сжимается в 10 раз для повышения основного тона и повышения слышимости вызовов. Преобразуйте сигнал в расписание MATLAB ® и постройте его график. Из шума в сигнале выделяются четыре особенности. Первый известен как трель, а остальные три известны как стоны.

[w,fs] = audioread('bluewhale.wav');
whale = timetable(w,'SampleRate',fs);
stackedplot(whale);

Figure contains an object of type stackedplot.

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

emd(whale,'MaxNumIMF',3)

Figure contains 5 axes. Axes 1 contains an object of type line. This object represents data. Axes 2 contains an object of type line. This object represents data. Axes 3 contains an object of type line. This object represents data. Axes 4 contains an object of type line. This object represents data. Axes 5 contains an object of type line. This object represents data.

Вычислите первые три Т сигнала. Используйте 'Display' пара «имя-значение» для вывода таблицы, показывающей количество итераций просеивания, относительный допуск и критерий остановки отсеивания для каждого МВФ.

imf = emd(whale,'MaxNumIMF',3,'Display',1);
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  
      1      |        1     |      0.13523   |  SiftMaxRelativeTolerance
      2      |        2     |     0.030198   |  SiftMaxRelativeTolerance
      3      |        2     |      0.01908   |  SiftMaxRelativeTolerance
Decomposition stopped because maximum number of intrinsic mode functions was extracted.

Для построения графика гильбертова спектра сигнала используйте вычисленные ПС. Ограничьте диапазон частот от 0 Гц до 1400 Гц.

hht(imf,'FrequencyLimits',[0 1400])

Figure contains an axes. The axes with title Hilbert Spectrum contains 3 objects of type patch.

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

[hs,f,t] = hht(imf,'FrequencyLimits',[0 1400]);

mesh(seconds(t),f,hs,'EdgeColor','none','FaceColor','interp')
xlabel('Time (s)')
ylabel('Frequency (Hz)')
zlabel('Instantaneous Energy')

Figure contains an axes. The axes contains an object of type surface.

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

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

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

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

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

[imf,residual,info] = emd(X,'Interpolation','pchip');

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

Вычислите параметры гильбертовского спектра: гильбертовский спектр hs, частотный вектор f, вектор времени t, мгновенная частота imfinsfи мгновенная энергия imfinse.

[hs,f,t,imfinsf,imfinse] = hht(imf,fs);

Используйте вычисленные параметры спектра Гильберта для частотно-временного анализа и диагностики сигналов.

Генерация многокомпонентного сигнала, состоящего из трех синусоид частот 2 Гц, 10 Гц и 30 Гц. Образцы синусоид отбирают при 1 кГц в течение 2 секунд. Встроить сигнал в белый гауссов шум дисперсии 0,01 ².

fs = 1e3;
t = 1:1/fs:2-1/fs;
x = cos(2*pi*2*t) + 2*cos(2*pi*10*t) + 4*cos(2*pi*30*t) + 0.01*randn(1,length(t));

Вычислите значения В шумного сигнала и визуализируйте их на 3-D графике.

imf = vmd(x);
[p,q] = ndgrid(t,1:size(imf,2));
plot3(p,q,imf)
grid on
xlabel('Time Values')
ylabel('Mode Number')
zlabel('Mode Amplitude')

Figure contains an axes. The axes contains 5 objects of type line.

Для построения графика гильбертова спектра многокомпонентного сигнала используйте вычисленные ПС. Ограничьте диапазон частот [0, 40] Гц.

hht(imf,fs,'FrequencyLimits',[0,40])

Figure contains an axes. The axes with title Hilbert Spectrum contains 5 objects of type patch.

Моделирование сигнала вибрации от поврежденного подшипника. Вычислите спектр Гильберта этого сигнала и найдите дефекты.

Подшипник с диаметром шага 12 см имеет восемь элементов качения. Каждый элемент качения имеет диаметр 2 см. Внешнее кольцо остается неподвижным, когда внутреннее кольцо приводится в движение со скоростью 25 циклов в секунду. Акселерометр производит выборку колебаний подшипника при частоте 10 кГц.

fs = 10000;
f0 = 25;
n = 8;
d = 0.02;
p = 0.12;

Сигнал вибрации от здорового подшипника включает в себя несколько порядков частоты возбуждения.

t = 0:1/fs:10-1/fs;
yHealthy = [1 0.5 0.2 0.1 0.05]*sin(2*pi*f0*[1 2 3 4 5]'.*t)/5;

Резонанс возбуждается в вибрации подшипника на полпути процесса измерения.

yHealthy = (1+1./(1+linspace(-10,10,length(yHealthy)).^4)).*yHealthy;

Резонанс вносит дефект во внешнее кольцо подшипника, который приводит к прогрессирующему износу. Дефект вызывает ряд ударов, которые повторяются на внешнем кольце частоты прохождения мяча (BPFO) подшипника:

BPFO = 12nf0 [1-dpcosstart],

где f0 - скорость приведения в движение, n - число элементов качения, d - диаметр элементов качения, p - диаметр шага подшипников, Предположим, что угол контакта равен 15 °, и вычислите BPFO.

ca = 15;
bpfo = n*f0/2*(1-d/p*cosd(ca));

Используйте pulstran функция моделирования воздействий в виде периодической последовательности 5-миллисекундных синусоид. Каждая синусоида с частотой 3 кГц окнивается плоским верхним окном. Используйте закон мощности, чтобы ввести постепенный износ сигнала вибрации подшипника.

fImpact = 3000;
tImpact = 0:1/fs:5e-3-1/fs;
wImpact = flattopwin(length(tImpact))'/10;
xImpact = sin(2*pi*fImpact*tImpact).*wImpact;

tx = 0:1/bpfo:t(end);
tx = [tx; 1.3.^tx-2];

nWear = 49000;
nSamples = 100000;
yImpact = pulstran(t,tx',xImpact,fs)/5;
yImpact = [zeros(1,nWear) yImpact(1,(nWear+1):nSamples)];

Формирование сигнала вибрации BPFO путем добавления ударов к сигналу здорового подшипника. Постройте график сигнала и выберите 0,3-секундный интервал, начинающийся с 5,0 секунд.

yBPFO = yImpact + yHealthy;

xLimLeft = 5.0;
xLimRight = 5.3;
yMin = -0.6;
yMax = 0.6;

plot(t,yBPFO)

hold on
[limLeft,limRight] = meshgrid([xLimLeft xLimRight],[yMin yMax]);
plot(limLeft,limRight,'--')
hold off

Figure contains an axes. The axes contains 3 objects of type line.

Увеличьте масштаб выбранного интервала, чтобы визуализировать эффект воздействия.

xlim([xLimLeft xLimRight])

Figure contains an axes. The axes contains 3 objects of type line.

Добавьте белый гауссов шум к сигналам. Задайте дисперсию шума 1/1502.

rn = 150;
yGood = yHealthy + randn(size(yHealthy))/rn;
yBad = yBPFO + randn(size(yHealthy))/rn;

plot(t,yGood,t,yBad)
xlim([xLimLeft xLimRight])
legend('Healthy','Damaged')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Healthy, Damaged.

Использовать emd для выполнения эмпирического модового разложения сигнала здорового подшипника. Вычислите первые пять функций внутреннего режима. Используйте 'Display' аргумент «имя-значение» для вывода таблицы, показывающей количество итераций просеивания, относительный допуск и критерий остановки отсеивания для каждого МВФ.

imfGood = emd(yGood,'MaxNumIMF',5,'Display',1);
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  
      1      |        3     |     0.017132   |  SiftMaxRelativeTolerance
      2      |        3     |      0.12694   |  SiftMaxRelativeTolerance
      3      |        6     |      0.14582   |  SiftMaxRelativeTolerance
      4      |        1     |     0.011082   |  SiftMaxRelativeTolerance
      5      |        2     |      0.03463   |  SiftMaxRelativeTolerance
Decomposition stopped because maximum number of intrinsic mode functions was extracted.

Использовать emd без выходных аргументов для визуализации первых трех ИС и остатка.

emd(yGood,'MaxNumIMF',5)

Figure contains 5 axes. Axes 1 contains an object of type line. This object represents data. Axes 2 contains an object of type line. This object represents data. Axes 3 contains an object of type line. This object represents data. Axes 4 contains an object of type line. This object represents data. Axes 5 contains an object of type line. This object represents data.

Вычислите и визуализируйте сигналы дефектных подшипников. Первый эмпирический режим показывает высокочастотные воздействия. Этот высокочастотный режим увеличивается в энергии по мере износа.

imfBad = emd(yBad,'MaxNumIMF',5,'Display',1);
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  
      1      |        2     |     0.041274   |  SiftMaxRelativeTolerance
      2      |        3     |      0.16695   |  SiftMaxRelativeTolerance
      3      |        3     |      0.18428   |  SiftMaxRelativeTolerance
      4      |        1     |     0.037177   |  SiftMaxRelativeTolerance
      5      |        2     |     0.095861   |  SiftMaxRelativeTolerance
Decomposition stopped because maximum number of intrinsic mode functions was extracted.
emd(yBad,'MaxNumIMF',5)

Figure contains 5 axes. Axes 1 contains an object of type line. This object represents data. Axes 2 contains an object of type line. This object represents data. Axes 3 contains an object of type line. This object represents data. Axes 4 contains an object of type line. This object represents data. Axes 5 contains an object of type line. This object represents data.

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

figure
hht(imfBad(:,1),fs)

Figure contains an axes. The axes with title Hilbert Spectrum contains an object of type patch.

Спектр Гильберта третьего режима показывает резонанс в сигнале вибрации. Ограничьте диапазон частот от 0 Гц до 100 Гц.

hht(imfBad(:,3),fs,'FrequencyLimits',[0 100])

Figure contains an axes. The axes with title Hilbert Spectrum contains an object of type patch.

Для сравнения постройте график спектров Гильберта первого и третьего режимов сигнала здорового подшипника.

subplot(2,1,1)
hht(imfGood(:,1),fs)
subplot(2,1,2)
hht(imfGood(:,3),fs,'FrequencyLimits',[0 100])

Figure contains 2 axes. Axes 1 with title Hilbert Spectrum contains an object of type patch. Axes 2 with title Hilbert Spectrum contains an object of type patch.

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

свернуть все

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

hht обрабатывает каждый столбец в imf как внутренняя функция режима. Дополнительные сведения о вычислениях imf, см. emd.

Частота выборки, заданная как положительный скаляр. Если fs не подается, нормированная частота используется для вычисления спектра Гильберта. Если imf указывается как расписание, из него выводится частота выборки.

Расположение частотной оси на графике, указанное как 'yaxis' или 'xaxis'. Для отображения частотных данных по оси Y или оси X графика укажите freqlocation как 'yaxis' или 'xaxis' соответственно.

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

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

Пример: 'FrequencyResolution',1

Пределы частоты для вычисления спектра Гильберта, указанные как разделенная запятыми пара, состоящая из 'FrequencyLimitsи целочисленный вектор 1 на 2. FrequencyLimits задается в Гц.

Разрешение частоты для дискретизации пределов частоты, указанное как пара, разделенная запятыми, состоящая из 'FrequencyResolution"и положительный скаляр.

Определить FrequencyResolution в Гц. Если 'FrequencyResolution' не указано, значение (fhigh-flow )/100 выводится изFrequencyLimits. Здесь fhigh является верхним пределом FrequencyLimits и поток является нижним пределом.

Минимальное пороговое значение спектра Гильберта, указанное как разделенная запятыми пара, состоящая из 'MinThresholdи скаляр.

MinThreshold задает элементы hs 0, когда соответствующие элементы 10log10 (hs) меньше MinThreshold.

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

свернуть все

Гильбертовый спектр сигнала, возвращаемый в виде разреженной матрицы. Использовать hs для частотно-временного анализа и для идентификации локализованных признаков в сигнале.

Значения частоты сигнала, возвращаемые в виде вектора. hht использует частотный вектор f и вектор времени t для создания графика спектра Гильберта.

Математически, f обозначается как: f = flow: fres: fhigh, где fres - разрешение частоты.

Значения времени сигнала, возвращаемые в виде вектора или duration массив. hht использует вектор времени t и частотный вектор f для создания графика спектра Гильберта.

t возвращается как:

  • Массив, если imf указан как массив.

  • A duration массив, если imf указывается в виде единообразно отобранного графика.

Мгновенная частота каждого МВФ, возвращаемая в виде вектора, матрицы или расписания.

imfinsf имеет то же количество столбцов, что и imf и возвращается как:

  • Вектор, если imf задается как вектор.

  • Матрица, если imf задается как матрица.

  • Расписание, если imf указывается в виде единообразно отобранного графика.

Мгновенная энергия каждого МВФ, возвращаемая в виде вектора, матрицы или расписания.

imfinse имеет то же количество столбцов, что и imf и возвращается как:

  • Вектор, если imf задается как вектор.

  • Матрица, если imf задается как матрица.

  • Расписание, если imf указывается в виде единообразно отобранного графика.

Алгоритмы

Преобразование Гильберта-Хуана полезно для выполнения частотно-временного анализа нестационарных и нелинейных данных. Процедура Гильберта-Хуана состоит из следующих этапов:

  1. emd разлагает набор данных x на конечное число собственных функций режима.

  2. Для каждой функции внутреннего режима, xi, функция hht:

    1. Использование hilbert для вычисления аналитического сигнала, zi (t) = xi (t) + jH {xi (t)}, где H {xi} - преобразование Гильберта xi.

    2. Выражает zi как zi (t) = ai (t) ej

    3. Вычисляет мгновенную энергию, | ai (t) | 2, и мгновенную частоту, starti (t) ≡dθi (t )/dt. Если задана частота выборки,hht преобразует (t) в частоту в Гц.

    4. Вывод мгновенной энергии в imfinse и мгновенная частота в imfinsf.

  3. При вызове без выходных аргументов hht строит график энергии сигнала как функции времени и частоты, с цветом, пропорциональным амплитуде.

Ссылки

[1] Хуанг, Норден Э и Сэмюэл С. Шен. Преобразование Гильберта-Хуана и его применение. 2-й ред. т. 16. Междисциплинарные математические науки. ВСЕМИРНЫЙ НАУЧНЫЙ, 2014. https://doi.org/10.1142/8804.

[2] Хуан, Нордэн Э., Чжаохуа У, Стивен Р. Лонг, Кеннет К. Арнольд, Сяньяо Чэнь и Карин Бланк. «НА МГНОВЕННОЙ ЧАСТОТЕ». Достижения в области адаптивного анализа данных 01, № 02 (апрель 2009 года): 177-229. https://doi.org/10.1142/S1793536909000096.

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

.
Представлен в R2018a