Instantaneous frequency estimation using AR2 modelisation
[FNORM,T2,RATIO] = ifestar2(X, T) [FNORM,T2,RATIO] = ifestar2(X)
A real vector of size N: the signal to be analyzed.
A vector with integer elements >= 4: Time instants (default : 4:N).
a real column vector: the (normalized) instantaneous frequency.
a real column vector: the time instants coresponding to FNORM. Since the algorithm can not always give a value, T2 may be different of T.
a scalar in [0 1]: the proportion of instants where the algorithm yields an estimation
ifestar2 computes an estimate of the instantaneous frequency of the real signal X at time instant(s) T. The result FNORM lies between 0.0 and 0.5. This estimate is based only on the 4 last signal points, and has therefore an approximate delay of 2.5 points.
First example
Second example
N=1100; [deter,if1]=fmconst(N,0.05); deter=real(deter); noise=rand(N,1,'normal'); NbSNR=101; SNR=linspace(0,100,NbSNR)'; for iSNR=1:NbSNR, sig=sigmerge(deter,noise,SNR(iSNR)); [if2,t,ratio(iSNR)]=ifestar2(sig); EQM(iSNR,1)=norm(if1(t)-if2)^2 / length(t) ; end; clf(); subplot(211); plot(SNR,EQM); gca().log_flags="nl";xgrid; xlabel('SNR'); ylabel('EQM'); subplot(212); plot(SNR,ratio); xgrid; xlabel('SNR'); ylabel('ratio'); | ![]() | ![]() |