October 24, 2001 This version can calculate SNR. If you like to modify your own files, following description will help you. Points changed: 2 files are modified such as "an_start.m" and "save_results.m". (1) an_start.m after % Now the data has been scaled by calibration, so that it appears in units of K % ind=0:length(d_data)-2; plot(ind,real(d_data(ind))); % This would show the data % Oct 15, 2001 if name_site == 'T' global r_snr1 global r_snr2 global r_snr3 global bgr_power1 global bgr_power2 global bgr_power3 %when cp1h, there are 4 sets. if name_expr == 'CP1H' global r_snr4 global bgr_power4 end bgrind = find(lpg_bcs == 'b' & lpg_lag == 0 & lpg_code == 1); bg_power1 = mean(real(d_data(lpg_addr(bgrind)+1))); bgrind = find(lpg_bcs == 'b' & lpg_lag == 0 & lpg_code == 2); bg_power2 = mean(real(d_data(lpg_addr(bgrind)+1))); bgrind = find(lpg_bcs == 'b' & lpg_lag == 0 & lpg_code == 3); bg_power3 = mean(real(d_data(lpg_addr(bgrind)+1))); %when cp1h, there are 4 sets. if name_expr == 'CP1H' bgrind = find(lpg_bcs == 'b' & lpg_lag == 0 & lpg_code == 4); bg_power4 = mean(real(d_data(lpg_addr(bgrind)+1))); end subr_backgr sigind = find(lpg_bcs == 's' & lpg_lag == 0 & lpg_code == 1); r_snr1 = real(d_data(lpg_addr(sigind)+1)) / bg_power1; sigind = find(lpg_bcs == 's' & lpg_lag == 0 & lpg_code == 2); r_snr2 = real(d_data(lpg_addr(sigind)+1)) / bg_power2; sigind = find(lpg_bcs == 's' & lpg_lag == 0 & lpg_code == 3); r_snr3 = real(d_data(lpg_addr(sigind)+1)) / bg_power3; %when cp1h, there are 4 sets. if name_expr == 'CP1H' sigind = find(lpg_bcs == 's' & lpg_lag == 0 & lpg_code == 4); r_snr4 = real(d_data(lpg_addr(sigind)+1)) / bg_power4; end %end % for Tromso else global r_snr1 global bgr_power1 %when cp1h, there are 4 sets. % if name_expr == 'CP1H' % global r_snr4 % global bgr_power4 % end if name_expr == 'CP1H' bgrind = find(lpg_bcs == 'b' & lpg_lag == 0 & lpg_code == 1); bg_power1 = mean(real(d_data(lpg_addr(bgrind)+1))); end if name_expr == 'CP1K' global r_snr2 global bgr_power2 bgrind = find(lpg_bcs == 'b' & lpg_lag == 0 & lpg_code == 3); bg_power1 = mean(real(d_data(lpg_addr(bgrind)+1))); %when cp1k, there are 2 sets, but "s" is only 1. bgrind = find(lpg_bcs == 'b' & lpg_lag == 0 & lpg_code == 1); bg_power2 = mean(real(d_data(lpg_addr(bgrind)+1))); end subr_backgr if name_expr == 'CP1K' sigind = find(lpg_bcs == 's' & lpg_lag == 0 & lpg_code == 3); r_snr1 = real(d_data(lpg_addr(sigind)+1)) / bg_power1; sigind = find(lpg_bcs == 's' & lpg_lag == 0 & lpg_code == 3); r_snr2 = real(d_data(lpg_addr(sigind)+1)) / bg_power2; end if name_expr == 'CP1H' sigind = find(lpg_bcs == 's' & lpg_lag == 0 & lpg_code == 1); r_snr1 = real(d_data(lpg_addr(sigind)+1)) / bg_power1; end end %%%%%%%%%%%%%%%%%%% Then continure... % At this point one finds background subtracted data in vector d_data (2) save_results.pro Three parts need to be modified. 2-a) in the begging, say after "global status1 status2", add followings: %011015 global r_snr1 global bgr_power1 if name_site == 'T', global r_snr2 global r_snr3 global bgr_power2 global bgr_power3 %when cp1h, there are 4 sets. if name_expr == 'CP1H' global r_snr4 global bgr_power4 end else %when remote & cp1k, there are 2 sets. if name_expr == 'CP1K' global r_snr2 global bgr_power2 end end 2-b) After " variables_acf=[variables_acf ' r_Pt r_Tsys']; %011015 if name_site == 'T', variables_acf=[variables_acf ' r_snr1 r_snr2 r_snr3']; if name_expr == 'CP1H' variables_acf=[variables_acf ' r_snr4']; end else variables_acf=[variables_acf ' r_snr1']; if name_expr == 'CP1K' variables_acf=[variables_acf ' r_snr2']; end end Then, followed by "eval(['save ' result_path 'acf' sv_acf_f ' ' variables_acf])". 2-c) at last part for "variables", add followings: if name_site == 'T', variables= [variables ' r_snr1 r_snr2 r_snr3' ]; if name_expr == 'CP1H' variables= [variables ' r_snr4' ]; end else variables= [variables ' r_snr1' ]; if name_expr == 'CP1K' variables=[variables ' r_snr2']; end end Then, followed by "eval(['save ', file, '.mat ' variables])". %%% END *** ;*** hereafter changes for "write_ascii.m" *** Modify 4 parts as follows: (1) Before " name_expr= name_expr_set" add "name_expr_org= name_expr". (2) Before "for hcount=1:length(r_h)", add followings: %011015-16 make snr-arrays r_snr=r_snr1; if name_site == 'T', if name_expr_org == 'CP1K' r_pph=r_pprange*sin(r_el*3.14159/180.); r_pph1=r_pph(1:length(r_snr1)); r_pph3=r_pph(length(r_snr1)+length(r_snr2)+1:length(r_snr1)+length(r_snr2)+length(r_snr3)); c=0; i2=0; for i=2:length(r_h) d=r_h(i); if d < c i2=i;end c=d; end r_h_short=r_h(1:i2-1); r_snr_short=zeros(size(r_h_short)); for i=1:length(r_h_short) [c,d]=min(abs(r_pph1 - r_h_short(i))); % c: the minimum value of abs(array1 - array2(i)) % d: the array number %fprintf('%6.4f %9.4f %9.4f\n',c, r_pph1(d), r_h_short(i)); r_snr_short(i)=r_snr1(d); end r_snr=[r_snr_short;r_snr3]; end if name_expr_org == 'CP1H' r_pph=r_pprange*sin(r_el*3.14159/180.); r_pph1=r_pph(1:length(r_snr1)); r_pph2=r_pph(length(r_snr1)+1:length(r_snr1)+length(r_snr2)); r_pph3=r_pph(length(r_snr1)+length(r_snr2)+1:length(r_snr1)+length(r_snr2)+length(r_snr3)); r_pph4=r_pph(length(r_snr1)+length(r_snr2)+length(r_snr3)+1:length(r_pph)); % r_pp etc. do not use, but for comfirmation. r_snr=[r_snr2;r_snr4]; end else if name_expr_org == 'CP1K' r_snr=[r_snr1;r_snr2]; end end (3) Before "fprintf(fid2,'%4.0f', datef);" add "snrf=r_snr(hcount);" (4) Add fprintf(fid2,'%8.5f \n', snrf); EXAMPLE: (before change) fprintf(fid2,'%5.0f \n', r_Pt/1000); end (after change) fprintf(fid2,'%5.0f', r_Pt/1000); fprintf(fid2,'%8.5f \n', snrf); %011016 end %%%%%%%%%%% END ファイルは an_start.m save_results.m write_ascii_head_1.m write_ascii_head_2.m write_ascii_head_cp2.m を更新すること。(2002年1月22日)