SXXXXXXX_RadarDataReader/_src_idl/reader_data/Test/nagc_test.pro
VALLONGOL 5de2650675 add
2025-11-12 13:43:30 +01:00

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