В этом примере показано, как вычислить мгновенную частоту сигнала с помощью 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')
Найдите мгновенную частоту сигнала путем извлечения частотно-временного гребня максимальной энергии synchrosqueezed преобразования Фурье.
[sst,f,tfs] = fsst(x,fs); fridge = tfridge(sst,f);
Наложите гребень на графике преобразования. Преобразуйте время в миллисекунды и частоту к kHz.
hold on plot(t*1000,fridge/1000,'r') hold off
Для действительного сигнала можно найти мгновенную частоту более легко с помощью instfreq
функция. Например, отобразите мгновенную частоту действительной части комплексного щебета путем вычисления аналитического сигнала и дифференциации его фазы.
ax = real(x); instfreq(ax,fs,'Method','hilbert')
fsst
| ifsst
| instfreq
| pspectrum
| spectrogram
| tfridge