MATLAB: Instantaneous Frequency

signal processing

Hello
I am estimating the Instantaneous Frequency of my signal using the following code.
h=hilbert(acc);
unrolled_phase = unwrap(angle(h));
inst_freq = ((diff(unrolled_phase))'./diff(T))/(2*pi);
I get both positive and negative frequencies (very few) also some spikes. How to avoid negative frequency and unrealistic. frequencies?

Best Answer

Your problems are coming from the unwrapping of the phase. Your estimate of the instantaneous frequency can only be negative if diff(unrolled_phase) is negative. Just add 2pi to those points (and all the values after).
Related Question