Home > reduc > flag > setNewFlag.m

setNewFlag

PURPOSE ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SYNOPSIS ^

function [d flags bitNum] = setNewFlag(d, flag, step)

DESCRIPTION ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  function [d flags bitNum] = setNewFlag(d, flag, step)

     function which sets flag.bits according to the proper step in the
     analysis.  The following steps are valid:

    bit 0 - flagged by bitmask  (antenna diagnostics flag)
    bit 1 - user flag 
    bit 2 - time flag 
    bit 3 - deglitch  
    bit 4 - rfi       
    bit 5 - horizon 
    bit 6 - satellite  
    bit 7 - sun  
    bit 8 - moon  
    bit 9 - pos_user  
    bit 10 - alpha     
    bit 11 - tsys      
    bit 12 - noise     
    bit 13 - gain      
    bit 14- tau       
    bit 15- astro     
    bit 16- stokes   


  sjcm

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function [d flags bitNum] = setNewFlag(d, flag, step)
0002 
0003 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0004 %
0005 %  function [d flags bitNum] = setNewFlag(d, flag, step)
0006 %
0007 %     function which sets flag.bits according to the proper step in the
0008 %     analysis.  The following steps are valid:
0009 %
0010 %    bit 0 - flagged by bitmask  (antenna diagnostics flag)
0011 %    bit 1 - user flag
0012 %    bit 2 - time flag
0013 %    bit 3 - deglitch
0014 %    bit 4 - rfi
0015 %    bit 5 - horizon
0016 %    bit 6 - satellite
0017 %    bit 7 - sun
0018 %    bit 8 - moon
0019 %    bit 9 - pos_user
0020 %    bit 10 - alpha
0021 %    bit 11 - tsys
0022 %    bit 12 - noise
0023 %    bit 13 - gain
0024 %    bit 14- tau
0025 %    bit 15- astro
0026 %    bit 16- stokes
0027 %
0028 %
0029 %  sjcm
0030 %
0031 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0032 
0033 % first we see if we have a valid entry
0034 switch step
0035   case 'antenna'
0036     bitNum = 1;
0037     
0038   case 'user'
0039     bitNum = 2;
0040   
0041   case 'time'
0042     bitNum = 3;
0043   
0044   case 'deglitch'      
0045     bitNum = 4;
0046     
0047   case 'rfi'           
0048     bitNum = 5;
0049   
0050   case 'horizon'
0051     bitNum = 6;
0052     
0053   case 'satellite'
0054     bitNum = 7;
0055     
0056   case 'sun'
0057     bitNum = 8;
0058     
0059   case 'moon'
0060     bitNum = 9;
0061     
0062   case 'pos_user'
0063     bitNum = 10;
0064   
0065   case 'alpha'         
0066     bitNum = 11;
0067   
0068   case 'tsys'          
0069     bitNum = 12;
0070   
0071   case 'noise'         
0072     bitNum = 13;
0073   
0074   case 'gain'          
0075     bitNum = 14;
0076   
0077   case 'tau'       
0078     bitNum = 15;
0079   
0080   case 'astro'     
0081     bitNum = 16;
0082   
0083   case 'stokes'   
0084     bitNum = 17;
0085 
0086   otherwise
0087     error('Flag bit not recognized');
0088     
0089 end
0090 
0091 if(isempty(d))
0092   flags = [];
0093   return;
0094 end
0095 
0096 % first we check what the second argument is, whether it's a vector of
0097 % indices or a structure.
0098 if(isstruct(flag))
0099   % make sure we've set the right bit.
0100   flags = setRightBit(flag, bitNum);
0101 elseif(isvector(flag))  
0102   % make it into the structure form.
0103   flags = applyFlag(d, flag, bitNum);
0104 elseif(size(flag,2)==3)
0105   % make it into the structure form
0106   flags = applyFlag2(d, flag, bitNum);
0107 end
0108 
0109 % apply it to the existing data
0110 d = setFlagBits(d, flags);
0111 
0112 
0113 return;
0114 
0115 
0116 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0117 function newFlag = setRightBit(flag,bitNum)
0118 
0119 newFlag.bit.slow = zeros(size(flag.bit.slow), 'uint32');
0120 newFlag.bit.medium = zeros(size(flag.bit.medium), 'uint32');
0121 newFlag.bit.fast = zeros(size(flag.bit.fast), 'uint32');
0122 
0123 f = find(flag.bit.slow);
0124 newFlag.bit.slow(f) = bitset(newFlag.bit.slow(f), bitNum);
0125 f = find(flag.bit.medium);
0126 newFlag.bit.medium(f) = bitset(newFlag.bit.medium(f), bitNum);
0127 f = find(flag.bit.fast);
0128 newFlag.bit.fast(f) = bitset(newFlag.bit.fast(f), bitNum);
0129 
0130 return;
0131 
0132 
0133 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0134 function d = setFlagBits(d, flags)
0135 
0136 
0137 d.flags.bit.slow = bitor(d.flags.bit.slow, flags.bit.slow);
0138 d.flags.bit.medium = bitor(d.flags.bit.medium, flags.bit.medium);
0139 d.flags.bit.fast = bitor(d.flags.bit.fast, flags.bit.fast);
0140 
0141 d.flags.slow = d.flags.bit.slow > 0;
0142 d.flags.medium = d.flags.bit.medium > 0;
0143 d.flags.fast = d.flags.bit.fast > 0;
0144 
0145 return;
0146 
0147 
0148 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0149 function flags = applyFlag(d, flagVec, bitNum)
0150 
0151 l = length(flagVec);
0152 
0153 switch l
0154   case size(d.antenna0.receiver.data,1)
0155     flagRegTemp  = [];
0156     flagServTemp = [];
0157     flagRxTemp   = flagVec;
0158     
0159   case length(d.array.frame.features)
0160     flagRegTemp  = flagVec;
0161     flagServTemp = [];
0162     flagRxTemp   =[];
0163     
0164   case length(d.antenna0.thermal.ccTemperatureLoad)
0165     flagRegTemp  = [];
0166     flagServTemp = flagVec;
0167     flagRxTemp   = [];
0168 end
0169 
0170 if(~isempty(flagRegTemp))
0171   flagServTemp = repmat(flagRegTemp, [1 5]);
0172   flagServTemp = flagServTemp';
0173   flagServTemp = flagServTemp(:);
0174 
0175   flagRxTemp   = repmat(flagRegTemp, [1 100]);
0176   flagRxTemp   = flagRxTemp';
0177   flagRxTemp   = flagRxTemp(:);
0178   
0179 elseif(~isempty(flagServTemp))
0180   flagRegTemp = reshape(flagServTemp, [5, length(flagServTemp)/5]);
0181   flagRegTemp = mean(flagRegTemp) == 1;
0182   flagRegTemp = flagRegTemp';
0183 
0184   flagRxTemp   = repmat(flagServTemp, [1 20]);
0185   flagRxTemp   = flagRxTemp';
0186   flagRxTemp   = flagRxTemp(:);
0187 elseif(~isempty(flagRxTemp))
0188   flagRegTemp = reshape(flagRxTemp, [100, length(flagRxTemp)/100]);
0189   flagRegTemp = mean(flagRegTemp) == 1;
0190   flagRegTemp = flagRegTemp';
0191   
0192   flagServTemp = reshape(flagRxTemp, [20, length(flagRxTemp)/20]);
0193   flagServTemp = mean(flagServTemp) == 1;
0194   flagServTemp = flagServTemp';
0195   else
0196   error('No flags passed');
0197 end
0198 
0199 flagReg  = uint32(flagRegTemp);
0200 flagServ = uint32(flagServTemp);
0201 flagRx   = uint32(repmat(flagRxTemp, [1 3]));
0202 
0203 flags.bit.slow   = uint32(zeros(size(flagReg)));
0204 flags.bit.medium = uint32(zeros(size(flagServ)));
0205 flags.bit.fast   = uint32(zeros(size(flagRx)));
0206 
0207 f = find(flagReg);
0208 flags.bit.slow(f) = bitset(flags.bit.slow(f), bitNum);
0209 f = find(flagServ);
0210 flags.bit.medium(f) = bitset(flags.bit.medium(f), bitNum);
0211 f = find(flagRx);
0212 flags.bit.fast(f) = bitset(flags.bit.fast(f), bitNum);
0213 
0214 return;
0215 
0216 
0217 
0218 
0219 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0220 function flags = applyFlag2(d, flagArray, bitNum)
0221 
0222 
0223 
0224 for m=1:size(flagArray,2)
0225 
0226   flagRegTemp  = [];
0227   flagServTemp = [];
0228   flagRxTemp   = flagArray(:,m);
0229       
0230   flagRegTemp = reshape(flagRxTemp, [100, length(flagRxTemp)/100]);
0231   flagRegTemp = mean(flagRegTemp) == 1;
0232   flagRegTemp = flagRegTemp';
0233   
0234   flagServTemp = reshape(flagRxTemp, [20, length(flagRxTemp)/20]);
0235   flagServTemp = mean(flagServTemp) == 1;
0236   flagServTemp = flagServTemp';
0237 
0238   flagReg(:,m)  = flagRegTemp;
0239   flagServ(:,m) = flagServTemp;
0240   flagRx(:,m)   = flagRxTemp;
0241 end
0242 
0243 
0244 flagReg  = uint32(sum(flagReg,2) > 0);
0245 flagServ = uint32(sum(flagServ,2) > 0);
0246 flagRx   = uint32(flagRx);
0247 
0248 flags.bit.slow   = uint32(zeros(size(flagReg)));
0249 flags.bit.medium = uint32(zeros(size(flagServ)));
0250 flags.bit.fast   = uint32(zeros(size(flagRx)));
0251 
0252 f = find(flagReg);
0253 flags.bit.slow(f) = bitset(flags.bit.slow(f), bitNum);
0254 f = find(flagServ);
0255 flags.bit.medium(f) = bitset(flags.bit.medium(f), bitNum);
0256 f = find(flagRx);
0257 flags.bit.fast(f) = bitset(flags.bit.fast(f), bitNum);
0258 
0259 return;
0260 
0261 
0262 
0263 
0264

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