Mathematica Local max/min of Mathematica data sets.

AI Thread Summary
In Mathematica, local maxima of a data set can be identified using a custom function that checks for peaks based on neighboring values. The provided code snippet demonstrates how to implement this by partitioning the data into triplets and applying a peak detection condition. For finding expected zeros between two points where the response value drops to negative, another function is suggested that calculates the zero based on the signs of the values at those points. Users are encouraged to test these methods on sample data to ensure accuracy and understand their functionality. The discussion highlights practical techniques for analyzing data sets without complex fitting methods.
wil3
Messages
177
Reaction score
1
Is there a way in Mathematica to find the local maxima of a set of points? I have a fairly fine data set, and I can clearly see several peaks in it that I would like to know the numerical value of (as in, the highest point- I don't need a spline approximation or anything too fancy like that). I have already smoothed the set, so I'd rather not fit polynomials if possible.

Additionally, is there a way to find the expected zeros of a set? Let's say that I have two points in order, and somewhere between them the measured response value drops to negative. I know I can find this manually, but there are enough zeroes that I would prefer not to. I am not too picky regarding whether the guessed zero is based on a linear connection between the two points or some sort of exotic polynomial or spline.

Thanks very much.
 
Physics news on Phys.org
Suppose you have
points={{xa,ya},{xb,yb},{xc,yc}...}

peakQ[{{x1_,y1_},{x2_,y2_},{x3_,y3_}}]:=Abs[y1]<Abs[y2]&&Abs[y2]>Abs[y3];
peaks=Map[#[[2]]&,Select[Partition[points,3,1],peakQ[#]&]]

Then

crossQ[{{x1_,y1_},{x2_,y2_}}]:=Sign[y1]!=Sign[y2];
zero[{{x1_,y1_},{x2_,y2_}}]:=x1+(x2-x1)*Abs[y1]/Abs[y2+y1];
zeros=Map[zero[#]&,Select[Partition[points,2,1],crossQ[#]&]]

Test these carefully on sample data to make certain I haven't made any mistakes.

Then study how and why these work so that you can use these methods yourself in the future.
 
Sorry about the delay in replying. That worked perfectly, like your suggestions always do. Thanks very much for your help.
 

Similar threads

Replies
6
Views
4K
Replies
2
Views
4K
Replies
2
Views
3K
Replies
5
Views
11K
Replies
8
Views
2K
Replies
1
Views
7K
Replies
1
Views
2K
Replies
2
Views
3K
Replies
4
Views
7K
Back
Top