Мгновенная частота комплексного чирплета

В этом примере показано, как вычислить мгновенную частоту сигнала с помощью synchrosqueezed преобразования Фурье.

Сгенерируйте щебет с синусоидально различным содержимым частоты. Сигнал встраивается в белый Гауссов шум и производится на уровне 3 кГц в течение 1 секунды.

fs = 3000;
t = 0:1/fs:1-1/fs;

x = exp(2j*pi*100*cos(2*pi*2*t)) + randn(size(t))/100;

Вычислите и постройте synchrosqueezed преобразование Фурье сигнала. Отобразите время на оси X и частоту на оси Y.

fsst(x,fs,'yaxis')

Figure contains an axes object. The axes object with title Fourier Synchrosqueezed Transform contains an object of type image.

Найдите мгновенную частоту сигнала путем извлечения частотно-временного гребня максимальной энергии synchrosqueezed преобразования Фурье.

[sst,f,tfs] = fsst(x,fs);

fridge = tfridge(sst,f);

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

hold on
plot(t*1000,fridge/1000,'r')
hold off

Figure contains an axes object. The axes object with title Fourier Synchrosqueezed Transform contains 2 objects of type image, line.

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

ax = real(x);

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

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

Смотрите также

| | | | |

Похожие темы