Seekpeaks

find maxima of an arbitrary function
1.1K Downloads
Updated 28 Apr 2006

No License

[xm,ym,xx,yy]=Seekpeaks(fun,x,y,y_tol,Nsteps,varargin)
Searches the maxima of the function 'fun', which is an object such as produced by inline or by a m-function. y=fun(x,P1,P2,...), where P1, P2,...are additional parameters used in the function 'fun' and are given in 'varargin' in Seekpeaks as p1,p2,... (see example below)
Note: use 'fun' for m-function and (just) fun for inline function

The INPUT x and y (=fun(x)) are the samples used to locate the maxima and the program will refine iterativeley around the local maxima to find the exact maxima. y_tol gives the relative stop criteria for stopping the maxima search and Nsteps is a number to terminate the session in case it takes long time to find the maxima. Default are 1e-6 and 50 and will be used in case [],[] are used as arguments in the function.

The OUTPUT xm gives the positions of the maxima and ym the corresponding values (vectors). xx and yy gives the union of all values that are found during the refinement including the input sample x and y (it is useful for plot-purposes).

%%% Example:

define a function fun(x) with an additional parameter s
fun1=inline('s^2*(1./(s^2+(x-1).^2)+1./(s^2+(x-2).^2))','x','s')
% calculate a rough sample (x,y) of the function
x=linspace(0,3,20);
s=0.001; %parameter
y=fun1(x,s);
% Seek the peaks of the function fun1
[xm,ym,xx,yy]=Seekpeaks(fun1,x,y,[],[],s);
xm
plot(xx,yy,x,y,'.');

Cite As

Per Sundqvist (2024). Seekpeaks (https://www.mathworks.com/matlabcentral/fileexchange/10907-seekpeaks), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R13
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Physics in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.0.0.0