我需要在3D冲浪图中找到几个(~5)峰值;尝试过imregionalmax,但它给了我太多的最大值,我无法找到控制它的方法。
我想我需要找到的实际峰值在我的z数组中(x by y),但findpeaks仅适用于矢量数组。还有其他选择吗?我已经阅读了有关函数挤压的内容 - 但并不完全确定如何使用它。
链接是图表的一个例子,数据点是我需要知道的峰值的例子。
如果有人能够对此有所了解,那就太棒了,谢谢!
我用于imregionalmax的MCVE是
Z = peaks;
y = linspace(1,100,49);
x = linspace(10,20,49);
[X, Y] = meshgrid(x,y);
figure
surf(X, Y, Z,'EdgeColor','none','FaceColor','interp');
maxZ = imregionalmax(Z);
plot3(X(maxZ),Y(maxZ),Z(maxZ),'r*','MarkerSize',12)
答案 0 :(得分:0)
我不熟悉确定性方法来实现这一目标,但如果找不到任何快速解决方案,可以使用 metaheuristics 来确定曲面的局部最大值。
有多种算法,包括:
我认为最近在MATLAB中实现了PSO,请查看:https://es.mathworks.com/help/gads/particleswarm.html