How to find peaks in 3d mesh?

79 次查看(过去 30 天)
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?

采纳的回答

Mike Garrity
Mike Garrity 2016-4-6
编辑:Mike Garrity 2016-4-6
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 个评论
OldCar
OldCar 2016-4-6
编辑:OldCar 2016-4-11
I have a big set of values and it say that index exceeds matrix dimensions. What can I do?
Chibuzo Nnonyelu
Chibuzo Nnonyelu 2018-12-13
You need to use the meshed X and Y. As in, fetched your ix indices from the meshed X and Y.

请先登录,再进行评论。

更多回答(2 个)

donghun lee
donghun lee 2018-7-3
Same Error :)

Cristian Alistarh
Cristian Alistarh 2020-6-17
编辑:Cristian Alistarh 2020-6-17
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 个评论
Cristian Alistarh
OK, sounds better than my suggestion.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Spectral Measurements 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by