Finding local minima and maxima of a graph

James Hurley jhurley0305 at
Sun Dec 5 02:01:28 EST 2010

> Message: 26
> Date: Sat, 04 Dec 2010 12:56:05 -0500
> From: Bryan McCormick <bryan at>
> To: use-livecode at
> Subject: Finding local minima and maxima of a graph
> Message-ID: <4CFA80B5.3090804 at>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
> I have a very large number of graphs to crunch through to find local
> minima and maxima. The data is regularly spaced, which eliminated one
> problem. I know too that the window value used has to be an adjustable
> variable as peak and trough significance may need to be found for a  
> wide
> range of time periods within the data set.
> I had thought of using a moving average to find a slope of zero and  
> then
> use an offset function to find the peak and trough in time.
> I've used stackoverflow to have a look and apparently the problem is a
> lot less trivial than I thought.
> Any suggestions for fitting to a function, using the graphing  
> functions
> in rev, etc would be most welcome.


If the data is "well behaved" you might try just finding out where the  
derivative (slope) changes sign. For example:

function MinMax tList
    put line 1 of tList into yOld
    put 0 into dyOld
    repeat for each line yNew in tList
       put yNew - yOld into dy
       put dy * dyOld into tChange
       if tChange  < 0 or tChange = 0 then
          put yNew & cr after tExreema
       end if
       put ynew into yOld
       put dy into dyOld
    end repeat
    return tExreema
end MinMax

More information about the use-livecode mailing list