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

Преобразование Гильберта оценивает мгновенную частоту сигнала только для монокомпонентных сигналов. Монокомпонентный сигнал описывается в частотно-временной плоскости одним «гребнем». Набор монокомпонентных сигналов включает одинарные синусоиды и такие сигналы, как щебет.

Сгенерируйте щебет, дискретизированный с частотой дискретизации 1 кГц в течение двух секунд. Укажите щебет так, чтобы его частота первоначально составляла 100 Гц и увеличивалась до 200 Гц через одну секунду.

fs = 1000;
t = 0:1/fs:2-1/fs;
y = chirp(t,100,1,200);

Оцените спектрограмму щебета с помощью краткосрочного преобразования Фурье, реализованного в pspectrum функция. Сигнал хорошо описан одной пиковой частотой в каждую точку времени.

pspectrum(y,fs,'spectrogram')

Figure contains an axes. The axes with title Fres = 10.267 Hz, Tres = 250 ms contains an object of type image.

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

z = hilbert(y);
instfrq = fs/(2*pi)*diff(unwrap(angle(z)));

clf
plot(t(2:end),instfrq)
ylim([0 fs/2])

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

The instfreq функция вычисляет и отображает текущую частоту за один шаг.

instfreq(y,fs,'Method','hilbert')

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains an object of type line.

Метод прекращает работать, когда сигнал не является монокомпонентным.

Сгенерируйте сумму двух синусоидов частот 60 Гц и 90 Гц, дискретизированных при частоте 1023 Гц в течение двух секунд. Вычислите и постройте график спектрограммы. Каждая временная точка показывает присутствие двух компонентов.

fs = 1023;
t = 0:1/fs:2-1/fs;
x = sin(2*pi*60*t)+sin(2*pi*90*t);

pspectrum(x,fs,'spectrogram')
yticks([60 90])

Figure contains an axes. The axes with title Fres = 10.257 Hz, Tres = 250.2444 ms contains an object of type image.

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

z = hilbert(x);
instfrq = fs/(2*pi)*diff(unwrap(angle(z)));

plot(t(2:end),instfrq)
ylim([60 90])
xlabel('Time (s)')
ylabel('Frequency (Hz)')

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

The instfreq функция также оценивает среднее значение.

instfreq(x,fs,'Method','hilbert')

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains an object of type line.

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

[s,f,tt] = pspectrum(x,fs,'spectrogram');

numcomp = 2;
[fridge,~,lr] = tfridge(s,f,0.1,'NumRidges',numcomp);

pspectrum(x,fs,'spectrogram')
hold on
plot3(tt,fridge,abs(s(lr)),'LineWidth',4)
hold off
yticks([60 90])

Figure contains an axes. The axes with title Fres = 10.257 Hz, Tres = 250.2444 ms contains 3 objects of type image, line.

См. также

|

Похожие темы