107 lines
3.0 KiB
Prolog
107 lines
3.0 KiB
Prolog
PRO nagc_test, SUM_I, SUM_Q
|
|
|
|
;Parameter
|
|
offset_rbin = 25
|
|
nagc_step = 0.5
|
|
nagc_ini = 0.5
|
|
nagc_samples = 62
|
|
|
|
;Processing
|
|
|
|
stop_rbin = n_elements(SUM_I[0,*])
|
|
|
|
nagc_sig = complex(SUM_I,SUM_Q)
|
|
nagc_sum = 20.*alog10(abs(total(nagc_sig[*,offset_rbin:stop_rbin-1],2)))
|
|
|
|
nagc_c = -(lindgen(nagc_samples)*nagc_step)
|
|
|
|
diff = nagc_sum - nagc_sum[0] - nagc_c
|
|
;stop
|
|
;accuracy
|
|
accuracy_0_4 = where(abs(diff[0:3*2]) GT 0.3, num_fail)
|
|
num_fail_acc = num_fail
|
|
|
|
accuracy_4_8 = where(abs(diff[3.5*2:7*2]) GT 0.4, num_fail)
|
|
num_fail_acc = num_fail_acc + num_fail
|
|
|
|
accuracy_8_16 = where(abs(diff[7.5*2:15*2]) GT 0.5, num_fail)
|
|
num_fail_acc = num_fail_acc + num_fail
|
|
|
|
accuracy_16_32 = where(abs(diff[15.5*2:30.5*2]) GT 0.7, num_fail)
|
|
num_fail_acc = num_fail_acc + num_fail
|
|
|
|
IF (num_fail_acc GT 0) THEN print," NAGC ACCURACY FAIL", num_fail_acc ELSE print," NAGC ACCURACY OK"
|
|
|
|
;stop
|
|
;monotonicità
|
|
mon = (nagc_sum-shift(nagc_sum,-1))[0:nagc_samples-2]
|
|
mon_fail = where(mon LE 0., num_fail)
|
|
IF (num_fail GT 0) THEN print, " NAGC MON_FAIL", num_fail ELSE print," NAGC MON OK"
|
|
|
|
|
|
;gmcplot, Y1=nagc_sum - nagc_sum[0], Y2=nagc_c, Y3=diff, xglob=lindgen(nagc_samples)*0.5+0.5
|
|
|
|
END
|
|
|
|
|
|
|
|
PRO stc_test, SUM_I, SUM_Q, max_att, stc_tracking
|
|
|
|
;Parameter
|
|
offset_rbin = 25
|
|
stc_step = 0.5
|
|
nagc_ini = 0.5
|
|
stc_samples = 256
|
|
att_to_ck = max_att
|
|
|
|
;Processing
|
|
|
|
start_rbin = 20
|
|
stop_rbin = start_rbin + stc_samples
|
|
|
|
|
|
stc_sig = 20.*alog10(abs(fft(complex(SUM_I,SUM_Q),dim=1)))
|
|
stc_to_analyze = stc_sig[64,start_rbin:stop_rbin-1]
|
|
print, "attenuazione primo campione", stc_to_analyze[0]
|
|
stc_to_analyze = (stc_to_analyze[2*lindgen(stc_samples/2)] + stc_to_analyze[2*lindgen(stc_samples/2)+1])/2
|
|
|
|
stc_c = -(lindgen(stc_samples/2)*stc_step)
|
|
|
|
diff = stc_to_analyze - stc_to_analyze[0] - stc_c
|
|
|
|
|
|
|
|
;accuracy
|
|
att_stc = diff[0:9.5*2]
|
|
accuracy_0_10 = where(abs(att_stc) GT 0.75+1.0, num_fail)
|
|
num_fail_acc = num_fail
|
|
IF num_fail GT 0 THEN print, abs((att_stc)[accuracy_0_10]), 0.75+1, stc_c[accuracy_0_10]
|
|
|
|
att_stc = diff[10*2:19.5*2]
|
|
accuracy_10_20 = where(abs(att_stc) GT 1.+2.5, num_fail)
|
|
num_fail_acc = num_fail_acc + num_fail
|
|
|
|
IF num_fail GT 0 THEN print, abs((att_stc)[accuracy_10_20]), 1.+1, stc_c[10*2+accuracy_10_20]
|
|
|
|
att_stc = diff[20*2:att_to_ck*2-1]
|
|
accuracy_20 = where(abs(att_stc) GT -0.05*stc_c[20*2:att_to_ck*2-1]+2.5, num_fail)
|
|
num_fail_acc = num_fail_acc + num_fail
|
|
IF num_fail GT 0 THEN print, abs((att_stc)[accuracy_20]), -0.05*stc_c[20*2+accuracy_20]+1.0, stc_c[20*2+accuracy_20]
|
|
|
|
IF (num_fail_acc GT 0) THEN BEGIN
|
|
print," ACCURACY FAIL", num_fail_acc
|
|
ENDIF ELSE print," ACCURACY OK"
|
|
|
|
|
|
|
|
;monotonicità
|
|
mon = (stc_to_analyze-shift(stc_to_analyze,-1))[0:att_to_ck*2-1]
|
|
mon_fail = where(mon LE 0., num_fail)
|
|
IF (num_fail GT 0) THEN print, " MON_FAIL", num_fail ELSE print, " MON_OK" ;, mon_fail*0.5
|
|
|
|
stc_tracking = stc_to_analyze - stc_to_analyze[0]
|
|
|
|
;gmcplot, Y1=stc_to_analyze - stc_to_analyze[0], Y2=stc_c, Y3=diff, xglob=0.5*lindgen(stc_samples/2)
|
|
|
|
|
|
END |