;+ ; prep_fon.pro <file desc here> ; ; :Author: ; Philippe Zarka ; ; :History: ; 2003/12/08: Created ; ; 2003/12/08: Last Edit ;- ; ; --------------------- ; program PREP_FON.pro ;+ ; prep_fon is a procedure that <behavior desc here> ; ; :Uses: ; fond, prep_df ;- pro PREP_FON, aaaajjjd,hd,aaaajjjf,hf,bande;,trace ; --------------------- ; read,'aaaajjjd, hd, aaaajjjf, hf, bande (0-4) ? ', $ ; aaaajjjd,hd,aaaajjjf,hf,bande for i=aaaajjjd,aaaajjjf do begin if i eq aaaajjjd then hhd=hd else hhd=0 if i eq aaaajjjf then hhf=hf else hhf=24 PREP_DF, i, hhd, hhf, bande, vvbuf,xtsbuf,xfbuf,msecbuf if i eq aaaajjjd then begin vv=fix(100.*alog10(vvbuf(*,0:3))) & xf=xfbuf endif else begin vv=[vv,fix(100.*alog10(vvbuf(*,0:3)))] & xf=[xf,xfbuf] endelse print & print,long(i),' memoire =',n_elements(xf)*5.*2/1024/1024,' Mbytes' help, vv,xf endfor band=['A','B','C','HF1','HF2'] path='/user4/rpws/idlsave/' nom=strtrim(long(aaaajjjd),2)+'_'+strtrim(fix(hd),2)+'_'+ $ strtrim(long(aaaajjjf),2)+'_'+strtrim(fix(hf),2)+'_'+band(bande) trace = 0 ; calcul & soustraction du fond ; par pas de frequence de 3 kHz (lin) ou 0.02 (log) ; calcul du S/B des donnees n=n_elements(xf) df=5. if bande le 2 then begin xf=alog10(xf) & df=0.02 endif fmin=min(xf) & fmax=max(xf) & pas=long((fmax-fmin)/df) freqfon=fmin+findgen(pas+2)*df fon=fltarr(pas+2,4) & fon_dB=fon & sig=fon & sig_dB=fon histfon=fltarr(199,pas+2,4) & histmin=fon print ; read,'Trace des histogrammes de fond (oui=1, non=0) ? ',trace if trace then begin set_plot,'X' & window,0,xs=500,ys=800 & !p.multi=[0,3,5] endif for i=0,pas+1 do begin ftest=fmin+i*df test=where(abs(xf-ftest) le df/2) if test(0) ne -1 then begin for j=0,3 do begin vtest=vv(test,j)/10. vtestmin=min(vtest) & histmin(i,j)=vtestmin vtest=vtest-vtestmin+1. FOND,vtest,vfon,vsig histfon(*,i,j)=histogram(vtest,min=1.,max=100.,binsize=0.5) if trace then begin htest=histogram(vtest,min=min(vtest),max=max(vtest),binsize=0.5) xtest=min(vtest)+(findgen(n_elements(htest))+0.5)*0.5 plot,xtest,htest,psym=10,xtit='dB',ytit='N', $ tit=string(format='(i4," / ",i4," : ",f9.3)',i+1,pas+2,ftest) oplot,[0,0]+vfon,[0,1e6],line=1 rien='' ; if !p.multi(0) eq 0 then read,rien endif vmin=vfon-1.+vtestmin fon_dB(i,j)=vmin fon(i,j)=10.^(vmin/10.) sig_dB(i,j)=vsig sig(i,j)=fon(i,j)*(10.^(vsig/10.)-1) endfor endif endfor ; sauvegarde fond & sig (lineaire & dB) test=where(reform(fon(*,0)) gt 0.) freqfon=freqfon(test) & fon=fon(test,*) & fon_dB=fon_dB(test,*) sig=sig(test,*) & sig_dB=sig_dB(test,*) histmin=histmin(test,*) & histfon=histfon(*,test,*) if bande le 2 then freqfon=10.^freqfon print & print,'Fond' & help,freqfon,fon,fon_dB,sig,sig_dB,histmin,histfon save,freqfon,fon,fon_dB,sig,sig_dB,histmin,histfon, $ file=path+'f'+nom+'.idlsave',/verb return end