Code covered by the BSD License

### Highlights from extrema.m, extrema2.m

4.6087
4.6 | 26 ratings Rate this file 272 Downloads (last 30 days) File Size: 51.6 KB File ID: #12275 Version: 1.0

# extrema.m, extrema2.m

### Carlos Adrian Vargas Aguilera (view profile)

14 Sep 2006 (Updated )

Search all extrema points of a time series or a surface with/without NaN's.

### Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

File Information
Description

Search all the maxima and minima points (peaks) in a time series (vector) or a surface (matrix), via columns, rows and crossing diagonals, ignoring NaN's elements.
USAGE:

[zmax,imax,zmin,imin]= extrema2(peaks);

where zmax (zmin) are the maxima (minima) elements and imax (imin) their linear index (check IND2SUB).

They come with the examples on the screenshot.

These are the same files as EXTREME.M and EXTREME2.M, but updated.

Acknowledgements
MATLAB release MATLAB 7 (R14)
MATLAB Search Path
```/
/extrema```
05 Mar 2016 Saeed Asghari

### Saeed Asghari (view profile)

05 Mar 2016 Saeed Asghari

26 Feb 2016 K G

### K G (view profile)

I run the function

[hmax,imax,hmin,imin] = extrema2(h)

where h is a 1x15 vector (h=[11717 6172 2963 574 867 1099 1384 1726 2045 2230 2900 3460 3547 1625 617]) and I get the following error:

Attempted to access smaxcol(:,1); index out of bounds because
size(smaxcol)=[0,0].
Error in extrema2 (line 73)
im = unique([smaxcol(:,1);smincol(:,1)]); % Rows with column extrema

Comment only
05 Feb 2016 Arun Kumar

### Arun Kumar (view profile)

Found it very useful. Thanks for this submission.

05 Jan 2016 Elsaeed Ali

### Elsaeed Ali (view profile)

jghg

20 May 2015 Ilya Belevich

### Ilya Belevich (view profile)

06 May 2015 Mohamed

### Mohamed (view profile)

This one should be added to Matlab native code ... :)

31 Mar 2015 Michael

### Michael (view profile)

Does the job of 'findpeaks' with less code, and can find minima with so much less hassle. Might as well be considered a 'required' add-on.

25 Nov 2014 Zohar Bar-Yehuda

### Zohar Bar-Yehuda (view profile)

Simple and useful.

16 Oct 2014 Phillip

### Phillip (view profile)

Using this across a broad range of applications, very handy.

17 Sep 2014 Shuangshi

16 Sep 2014 sara

### sara (view profile)

how can I use this mfile to run over my image?

Comment only
09 Jul 2014 karlosgk

24 Mar 2014 Hugo

### Hugo (view profile)

Thx, works great!

Comment only
11 Mar 2014 Vincent

### Vincent (view profile)

thank you
this saves me a day of coding...

27 Jun 2013 Shirah

### Shirah (view profile)

Hello, does anybody know how to replicate those detected extrema points onto a grayscale image.

Thank You

Comment only
10 Apr 2013 Rafael Freire

### Rafael Freire (view profile)

Do you have an option to put the sensitivity of the peaks? to only get the higher ones....

21 Mar 2013 Kumar

### Kumar (view profile)

29 Jun 2012 M@lik Ali

### M@lik Ali (view profile)

Hi all i have to calculate the LUV color components any one can help me...

Comment only
30 Apr 2012 Camille Couzi

### Camille Couzi (view profile)

Hola Carlos!
I am having some issues though... I am using your function inside a script which uses fminsearch also... and getting the following error message:

Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)
to change the limit. Be aware that exceeding your available stack space can

Error in extrema

Error while evaluating uicontrol Callback

Help! How do I solve this problem!
Gracias y muchos saludos!

Comment only
22 Mar 2012 raj

### raj (view profile)

[Gmax,imax,Gmin,imin] = extrema2(G);
hold on
plot3(T(imax),f(imax),Gmax,'bo')
for i = 1:length(Gmax)
text(x(imax(i)),y(imax(i)),zmax(i),[' ' num2str(zmax(i))])
end
hold off}
My problem is the T,f,G are of different sizes and an error comes up saying '??? Index exceeds matrix dimensions.' any suggestions please help

Comment only
22 Mar 2012 raj

### raj (view profile)

I have a problem while using it for an array can u explain an example as u did it for a vector please, I am a begginer with this stuff

Comment only
04 Mar 2012 Luke Winslow

### Luke Winslow (view profile)

04 Mar 2012 Luke Winslow

### Luke Winslow (view profile)

14 Feb 2012 Anusha

### Anusha (view profile)

Can someone help me on how to adapt this to detect maxima and minima points on an object edge?

Comment only
12 Dec 2011 Thomas

### Thomas (view profile)

much better than findpeaks for my data thanks so much!

30 Oct 2011 Onkar Singh Gujral

### Onkar Singh Gujral (view profile)

25 Aug 2011 Aslak Grinsted

### Aslak Grinsted (view profile)

Nice. There is also the built-in function findpeaks from the signal processing toolbox:

http://www.mathworks.se/help/toolbox/signal/findpeaks.html

Comment only
29 Apr 2011 Rafael Freire

### Rafael Freire (view profile)

Perfect for finds maximun and minimuns in a surface! Great Job

15 Feb 2011 Rick Towler

### Rick Towler (view profile)

Nice work.

Comment only
15 Feb 2011 Rick Towler

### Rick Towler (view profile)

26 Mar 2010 Sanjeev

### Sanjeev (view profile)

Excellent work

28 May 2009 joe saucer

### joe saucer (view profile)

hey guys.. is their anyway for this program to just give me the biggest maxes? my plot has many, many small peaks.. also, can you store these as variables?

Comment only
14 Nov 2008 Yin Wang

### Yin Wang (view profile)

Excellent work, this is exactly what I need.

12 Jul 2008 angeles sierra

kiero agregar un linck a mi fotolog
pero no se como aserle

Comment only
09 Apr 2007 Carlos Adrián Vargas Aguilera

You are so right Dimitri! I've made a terrible translation from spanish, I meant "extrema points"... Ouch! I need to change even the name!

Comment only
06 Apr 2007 Dimitri Shvorob

It might be helpful to briefly explain the exact definition of 'extreme points'.

Comment only
01 Mar 2007 Jacob Eisenstein

15 Jan 2007 Johnny Job

Well done.

22 Nov 2006 Carlos Adrián Vargas Aguilera

Thanks JaeKyu Suhr!, new file with bug fixed in about 1 day...

Comment only
22 Nov 2006 JaeKyu Suhr

This is excellent, but when i use extreme2.m
There is an error related to a variable "indx".
Therefore, I put a little bit of code in "extreme.m" like this

% NaN's:
inan = find(isnan(x));
if ~isempty(inan)
indx = 1:Nt;
indx(inan) = [];
x(inan) = [];
Nt = length(x);
else
indx = 1:Nt;
%%%%%%%%%%%%%%%%
end

14 Nov 2006 cloves souza

e muito legal

Comment only
15 Sep 2006 Sasha Trevizo

The author sure had a headache after he finished this, so, thanks for avoid it to me! It works really good!

13 Nov 2006

English translation from spanish. Little changes on the submit and screenshot.

17 Nov 2006

Now accepting NaN's.

22 Nov 2006

Fix bug in indx (by JaeKyu Suhr)

04 May 2016 1.0