Main Content

Instantaneous Frequency of Complex Chirp

This example shows how to compute the instantaneous frequency of a signal using the Fourier synchrosqueezed transform.

Generate a chirp with sinusoidally varying frequency content. The signal is embedded in white Gaussian noise and sampled at 3 kHz for 1 second.

fs = 3000; t = 0:1/fs:1-1/fs; x = exp(2j*pi*100*cos(2*pi*2*t)) + randn(size(t))/100;

Compute and plot the Fourier synchrosqueezed transform of the signal. Display the time on thex-axis and the frequency on they-axis.

fsst(x,fs,'yaxis')

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

Find the instantaneous frequency of the signal by extracting the maximum-energy time-frequency ridge of the Fourier Synchrosqueezed transform.

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

Overlay the ridge on the transform plot. Convert time to milliseconds and frequency to kHz.

holdonplot(t*1000,fridge/1000,'r') holdoff

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

For a real signal, you can find the instantaneous frequency more easily using theinstfreqfunction. For example, display the instantaneous frequency of the real part of the complex chirp by computing the analytic signal and differentiating its phase.

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.

See Also

|||||

Related Topics