So let me layout my question and the thought process on solving it.
Say, we have some system, and we want to see how deterministic the system is. By that I mean, I mean if I put some signal (real valued) of a fix frequency 100 times, how constantantly I get the same output(I am interested in phase).
Now lets say, I put 1 MHz tone (real) 100 times in my system, and i gather the data(real valued) at the system output, I want to measure/quantify how deterministic/repeatable my data is. Assume no noise. The only concern in my entire system is the ADC sampler which has some random process on it, causing cycle slips. So you see, I would have some phase mismatch between data. Assume the data is a FMCW radar. For chirp to chirp this sampling mismatch happens, as the sampler is reset every chirp. This would not cause any influence in range fft (since that is independent of small phase change) ... but the doppler fft would have reduced SNR.
So i want to quantify the problem coming out of the sampler cycle slips. One idea would be to take the Doppler fft and quantify the reduction of SNR, however i want my precision in ADC sample rate (say 1ns) . I don't see how i could set a threshold on the FFT plot , to say, with SNR reduction of 30 dB means-->1 cycle slip had occurred.
The other way is to take those real valued 100 signals... do the Hilbert transform, get the phase, convert to time(we know the frequency), and see how whats the varition like, and set the limits to +/- ts(adc sampling time).
See the code :
t_error=1e-9; % Randomly add phase error +/- 1ns(=1 adc cycle slip, we dont know if this occurs in system, % this is what we want to find out) phi_error_rad=(t_error*2*pi*fin*round(-1 + 2*rand(1,1))); for i=1:100 sig(:,i)=cos(2*pi*fin*t + phi_error_rad); h=hilbert(sig(:,i)); inst_phase(:,i) = unwrap(angle(h));%inst phase inst_freq(:,i) = diff(unwrap(angle(h)))/(2*pi)*fs; %inst frequency end figure(2) plot(inst_phase/(2*pi*fin)/1e-9)
As you can see in the figure the phase is linear, and as expected its between +/- 1 ns.
So my question would be, is this sufficient to say, well the phase(time) over 100 iterations remains within +/-1 ns, my system is within this limits. ?
What else could be done to make it robust ? any other ideas ?
This is just a model ofcourse, in real data, we have to find out if cycle slips are occuring... is this method robust for that ? any other suggestions. ?