Home > reduc > GroundRemoval.m

GroundRemoval

PURPOSE ^

SYNOPSIS ^

function [d] = GroundRemoval(d,file_name_stub,elevation_list)

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [d] = GroundRemoval(d,file_name_stub,elevation_list)
0002 
0003 disp('GroundRemoval:: Hello from GroundRemoval.');
0004 
0005 [home,installeddir]=where_am_i();
0006 
0007 % function to read in ground templates and remove them from our data
0008 % MI 08/2013
0009 ch1 = d.antenna0.receiver.data(:,1);
0010 ch2 = d.antenna0.receiver.data(:,2);
0011 ch3 = d.antenna0.receiver.data(:,3);
0012 ch4 = d.antenna0.receiver.data(:,4);
0013 ch5 = d.antenna0.receiver.data(:,5);
0014 ch6 = d.antenna0.receiver.data(:,6);
0015 ch7 = d.antenna0.receiver.data(:,7);
0016 ch8 = d.antenna0.receiver.data(:,8);
0017 
0018 az = d.antenna0.servo.apparent(:,1);
0019 el = round(d.antenna0.servo.apparent(:,2));
0020 
0021 % Make a string version of the elevation list.
0022 for i = 1:length(elevation_list)
0023   elevation_string_list(i) =cellstr(sprintf('%i',elevation_list(i))) 
0024 end
0025 
0026 for i = 1:length(elevation_list)
0027 
0028   data_at_this_el = find(el == elevation_list(i));
0029 
0030   az_at_this_el = az(data_at_this_el);
0031   
0032   % get data at each elevation and subtract off median value
0033 
0034   ch1_at_this_el = ch1(data_at_this_el) - nanmedian(ch1(data_at_this_el));
0035   ch2_at_this_el = ch2(data_at_this_el) - nanmedian(ch2(data_at_this_el));
0036   ch3_at_this_el = ch3(data_at_this_el) - nanmedian(ch3(data_at_this_el));
0037   ch4_at_this_el = ch4(data_at_this_el) - nanmedian(ch4(data_at_this_el));
0038   ch5_at_this_el = ch5(data_at_this_el) - nanmedian(ch5(data_at_this_el));
0039   ch6_at_this_el = ch6(data_at_this_el) - nanmedian(ch6(data_at_this_el)); 
0040   ch7_at_this_el = ch7(data_at_this_el) - nanmedian(ch7(data_at_this_el));
0041   ch8_at_this_el = ch8(data_at_this_el) - nanmedian(ch8(data_at_this_el));
0042 
0043   % read it ground templates - insert your favourite template (and its
0044   % location)
0045 
0046   post_fix_stub = [elevation_string_list{i},'gs.txt'] 
0047 
0048   disp('GroundRemoval:: About to open template files, E.g.');
0049   disp(['GroundRemoval:: ',home,'/',installeddir,'/constants/',file_name_stub,'_I',post_fix_stub]);
0050 
0051   fid1 = fopen([home,'/',installeddir,'/constants/',file_name_stub,'_I',post_fix_stub]);
0052 
0053   data1 = fscanf(fid1, '%f %f', [2 inf]);
0054   fclose(fid1);
0055   data1 = data1'; %'
0056 
0057 
0058   fid3 = fopen([home,'/',installeddir,'/constants/',file_name_stub,'_Q',post_fix_stub]);
0059   data3 = fscanf(fid3, '%f %f', [2 inf]);
0060   fclose(fid3);
0061   data3 = data3';%'
0062 
0063   fid5 = fopen([home,'/',installeddir,'/constants/',file_name_stub,'_U',post_fix_stub]);
0064   data5 = fscanf(fid5, '%f %f', [2 inf]);
0065   fclose(fid5);
0066   data5 = data5';%'
0067 
0068 
0069   disp('GroundRemoval:: template files opened and read.');
0070   % interpolate template to match data Az
0071 
0072   I_at_this_el = interp1(data1(:,1), data1(:,2), az_at_this_el, 'spline');
0073   Q_at_this_el = interp1(data3(:,1), data3(:,2), az_at_this_el, 'spline');
0074   U_at_this_el = interp1(data5(:,1), data5(:,2), az_at_this_el, 'spline');
0075   
0076   disp('GroundRemoval:: Interpolation complete.');
0077 
0078   nd1 = mean(d.antenna0.receiver.noise(:,1));
0079   nd2 = mean(d.antenna0.receiver.noise(:,2));
0080 
0081   % take template away from data then add back on the median value to return
0082   % signal to its original level
0083 
0084   disp('GroundRemoval:: Removing signal...');
0085 
0086   ch1(data_at_this_el) = (ch1_at_this_el - (I_at_this_el/(2*nd1))) + nanmedian(ch1(data_at_this_el));
0087   ch2(data_at_this_el) = (ch2_at_this_el - (Q_at_this_el/(2*nd1))) + nanmedian(ch2(data_at_this_el));
0088   ch3(data_at_this_el) = (ch3_at_this_el - (U_at_this_el/(2*nd1))) + nanmedian(ch3(data_at_this_el));
0089   ch4(data_at_this_el) = (ch4_at_this_el - (Q_at_this_el/(2*nd1))) + nanmedian(ch4(data_at_this_el));
0090   ch5(data_at_this_el) = (ch5_at_this_el - (U_at_this_el/(2*nd2))) + nanmedian(ch5(data_at_this_el));
0091   ch6(data_at_this_el) = (ch6_at_this_el - (Q_at_this_el/(2*nd2))) + nanmedian(ch6(data_at_this_el));
0092   ch7(data_at_this_el) = (ch7_at_this_el - (U_at_this_el/(2*nd2))) + nanmedian(ch7(data_at_this_el));
0093   ch8(data_at_this_el) = (ch8_at_this_el - (I_at_this_el/(2*nd2))) + nanmedian(ch8(data_at_this_el));
0094 
0095   disp('GroundRemoval:: Overwriting...');  
0096 
0097   % overwrite the data registers with the ground corrected signal
0098   d.antenna0.receiver.data(:,1) = ch1;
0099   d.antenna0.receiver.data(:,2) = ch2;
0100   d.antenna0.receiver.data(:,3) = ch3;
0101   d.antenna0.receiver.data(:,4) = ch4;
0102   d.antenna0.receiver.data(:,5) = ch5;
0103   d.antenna0.receiver.data(:,6) = ch6;
0104   d.antenna0.receiver.data(:,7) = ch7;
0105   d.antenna0.receiver.data(:,8) = ch8;
0106 
0107 end
0108 
0109 disp('GroundRemoval:: ... finished');
0110 
0111 end

Generated on Sun 14-Jun-2015 17:12:45 by m2html © 2005