LCLXTREM
Name
 
  lclxtrem
Purpose
 
  Find local minima or maxima in a 1-d vector.
Description
 
  Scan a vector and identify all maxima or minima separated by more than
    
    WIDTH values.
Category
 
  Spectroscopy
Calling Sequence
 
  idx=lclxtrem(vec,width,[/MAXIMA])
Inputs
 
  vec - Input vector of data points.
Optional Input Parameters
 
  width - size of zone to search, minima (or maxima) separated by less than
            
            width are never returned.  (Default = 5)
Keyword Input Parameters
 
  MAXIMA  - Flag, if set, causes program to search for local maxima, the default
            
            is to search for local minima
Outputs
 
  Returns indicies into vec that give local extrema.  This returned vector
    
    is also sorted by decreasing absolute value of vec.
Keyword Output Parameters
 
  COUNT  - Number of extrema returned.  If 0, there was an error.
Common Blocks
Side Effects
Restrictions
 
  The first and last points in the array will NEVER be flagged as extrema
    
    since there is no information to decide if the endpoint is an inflection
    
    or not.  There is one exception to this condition.  If the data are
    
    smooth and there are no inflection points, one or the other of the
    
    endpoints will be the absolute extreme.  In this case only, will an
    
    endpoint be returned.
Procedure
 
  This procedure scans the vector and looks for local maxima or local minima.
  
  In the first pass, all such extrema are flagged, if you want all of them
  
  Just set width to 0 if you want _all_ local extrema.  The second pass
  
  filters our extrema that are too close together.  The width of the filter
  
  can be provided, the default is 5.  The extrema are scanned in decreasing
  
  absolute value.  For each extremum, all other extrema that are fainter and
  
  are closer than width away are removed from the list.  The returned vector
  
  of indicies is sorted by decreasing size of the peak/trough.
Modification History
 
  97/12/5, Written by Marc W. Buie, Lowell Observatory
  
  99/11/24, MWB, total rewrite to speed it up and make it work properly.