exponenta event banner

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

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

Генерируйте чирп, отобранный при частоте 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.

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.

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.

См. также

|

Связанные темы