【问题标题】:Findpeaks in 3D (Surf) plot in Matlab在 Matlab 中的 3D(冲浪)图中 Findpeaks
【发布时间】:2018-10-10 01:33:04
【问题描述】:

我需要在 3D 冲浪图中找到几个 (~5) 峰;尝试了 imregionalmax ,但它给了我太多的最大值,我找不到控制它的方法。

我猜我需要找到的实际峰值在我的 z 数组中,即 (x x 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)

【问题讨论】:

  • 您能否与imregionalmax 分享您迄今为止所做的尝试以及结果与预期结果有何不同?我用peaksimregionalmax 对其进行了测试,发现局部最大值没有问题。
  • 嗨亚历克斯,我没有使用峰值,只有 imregionalmax。这就是我所拥有的,1drv.ms/u/s!Al6StzzA7jNMmkXZZv91tk-NWU1H
  • 很抱歉给您带来了困惑。我使用peaks 作为测试数据,因为我没有你的数据。您可以发布您的尝试并使用峰值而不是真实数据。这称为最小、完整、可验证示例 (MCVE),是提出好问题的先决条件。
  • 我不确定如何在 stackoverflow 上进行格式化,但这是一个添加到问题中的 MCVE。它有效,没问题,我的数据也是如此。但我遇到的问题是它发现了太多的峰,正如您在上一个链接的 matlab 图中看到的那样!

标签: matlab


【解决方案1】:

我不熟悉实现此目的的确定性方法,但如果您没有找到任何快速解决方案,您可以使用元启发式来确定曲面的局部最大值。

算法种类繁多,包括:

  • 遗传算法
  • 粒子群优化 (PSO)
  • 蜜蜂算法
  • ...

我认为最近在 MATLAB 中实现了 PSO,请查看:https://es.mathworks.com/help/gads/particleswarm.html

【讨论】:

  • 谢谢 Victor,如果我找不到你说的快速解决方案,我会试试看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多