# How to find peaks in 3d mesh?

94 visualizzazioni (ultimi 30 giorni)
OldCar il 6 Apr 2016
Risposto: Poison Idea fan il 1 Mag 2024
Hi, I have a mesh made from data ([Y,X] matrix and Z values) and I would like to find the peaks and report their position. How can I do it?
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Mike Garrity il 6 Apr 2016
Modificato: Mike Garrity il 6 Apr 2016
If your X & Y are monotone, and you have the Image Processing Toolbox, then the imregionalmax function is pretty robust. It handles all of the special cases like flat regions.
[x,y] = meshgrid(linspace(-3,3,10));
z = 10*ones(10,10);
z(2:4,2:4) = 22;
z(6:8,6:8) = 33;
z(2,7) = 44;
z(3,8) = 45;
z(4,9) = 44
surf(x,y,z,'FaceColor','interp')
ix = find(imregionalmax(z));
hold on
plot3(x(ix),y(ix),z(ix),'r*','MarkerSize',24)
##### 2 CommentiMostra NessunoNascondi Nessuno
OldCar il 6 Apr 2016
Modificato: OldCar il 11 Apr 2016
I have a big set of values and it say that index exceeds matrix dimensions. What can I do?
Chibuzo Nnonyelu il 13 Dic 2018
You need to use the meshed X and Y. As in, fetched your ix indices from the meshed X and Y.

Accedi per commentare.

### Più risposte (3)

donghun lee il 3 Lug 2018
Same Error :)
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

Cristian Alistarh il 17 Giu 2020
Modificato: Cristian Alistarh il 17 Giu 2020
I think you got this error:
Index exceeds the number of array elements
As stated above, you need to use the meshed X and Y.
Digging further into this, the indicies of the output of the imregionalmax function is given in linear array indicies and not 2D (row, columns) as one would normally expect. I had the same problem and another way to solve this is to use the convert linear indices to subscripts function ind2sub
ix = find(imregionalmax(z));
[a,b] = ind2sub(size(z),ix);
plot3(x_init(a),y_init(b),z(a,b),'r*','MarkerSize',24)
I am not sure if it will give you 100% what you are looking for, but explains the previous behaviour and another way on how to fix it.
##### 5 CommentiMostra 3 commenti meno recentiNascondi 3 commenti meno recenti
Memo Remo il 20 Giu 2020
Cristian Alistarh il 7 Lug 2020
OK, sounds better than my suggestion.

Accedi per commentare.

Poison Idea fan il 1 Mag 2024
Matlab 2024a has a new function islocalmax2 that can find peaks for 3D surface.
https://www.mathworks.com/help/matlab/ref/islocalmax2.html#mw_ecf7d164-82f0-4175-b939-b61c0f9c7f29
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Categorie

Scopri di più su Descriptive Statistics in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by