Home > scans > generate > makeAzScan.m

makeAzScan

PURPOSE ^

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

SYNOPSIS ^

function makeScan(azrange, elval, azParams, outfile, deadtime)

DESCRIPTION ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
  function makeScan(azrange, elval, azParams, outFile, deadtime)

    azrange is range of full scan in degrees ([minaz, maxaz]);
    elval is the fixed elevation value
    azParams = [azVelocity, maxAccel, timeToStart];
       where azVelocity is the velocity during the scan
             maxAccel is the maximum allowed acceleration

    outFile is scan file name.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function makeScan(azrange, elval, azParams, outfile, deadtime)
0002 
0003 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0004 %
0005 %  function makeScan(azrange, elval, azParams, outFile, deadtime)
0006 %
0007 %    azrange is range of full scan in degrees ([minaz, maxaz]);
0008 %    elval is the fixed elevation value
0009 %    azParams = [azVelocity, maxAccel, timeToStart];
0010 %       where azVelocity is the velocity during the scan
0011 %             maxAccel is the maximum allowed acceleration
0012 %
0013 %    outFile is scan file name.
0014 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0015 
0016 % define some things:
0017 azVel = azParams(1);
0018 azAcc = azParams(2);
0019 t2str = azParams(3);
0020 
0021 % first let's figure out how long it takes for each turnaround.
0022 turnTime = abs(azVel/azAcc);
0023 % just to be safe, let's multiply it by 50%
0024 turnTime = ceil(turnTime*1.5);
0025  
0026 azVals = [];
0027 
0028 % first the startup:
0029 azStart(1) = 0;
0030 azVels(1) = 0;
0031 for m=1:turnTime
0032   prevAz = azStart(m);
0033   newVel = azVels(m) + azAcc;
0034   if(newVel> azVel)
0035     newVel = azVel;
0036   end
0037   newAz = prevAz + newVel;  % since we get a loc every second, this is easy
0038   
0039   azStart = [azStart; newAz];
0040   azVels = [azVels; newVel];
0041 end
0042 azStart = azStart - max(azStart) + azrange(1);
0043 toGetThere = ones(t2str,1)*azStart(1);
0044 azStart = [toGetThere; azStart];
0045 
0046 
0047 % now we apply the body to the scan.
0048 azBody = azrange(1):azVel:azrange(2);
0049 % first entry is repeated in last entry of start:
0050 % last entry repeated in first of stop
0051 azBody(1) = [];
0052 azBody(length(azBody)) = [];
0053 azBody = azBody';
0054 
0055 % now we stop.
0056 azStop(1) = azrange(2);
0057 for m=1:turnTime
0058   prevAz = azStop(m);
0059   newAz = prevAz + azVels(length(azVels)-m+1);
0060   
0061   azStop = [azStop; newAz];
0062 end
0063 
0064 % now we combine them all:
0065 azVals = [azStart; azBody; azStop];
0066 
0067 azVals(azVals<0) = azVals(azVals<0) + 360;
0068 azVals(azVals>=360) = azVals(azVals>=360) - 360;
0069 
0070 for m=1:length(azVals)
0071   azTransp(m) = azVals(length(azVals)-m+1);
0072 end
0073 azVals = [azVals; azTransp'];
0074 
0075 
0076 
0077 elVals = ones(size(azVals))*elval;
0078 
0079 daVals = zeros(size(elVals));
0080 
0081 index = 0:1:(length(azVals)-1);
0082 
0083 
0084 % now we make the file:
0085 fid = fopen(outfile, 'w');
0086 fprintf(fid, 'MSPERSAMPLE 1000\n');
0087 for m=1:length(index)
0088   fprintf(fid, '%d \t %3.8f \t %3.f \t 0\n', index(m), azVals(m), elVals(m));
0089 end
0090 fclose(fid);
0091 
0092 
0093 end
0094   
0095

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