文件交换的选择

我们最好的用户提交

寻找局部极值

很多次,我想要一个快速的方法来找到当地的数据最小值或最大值。卡洛斯阿德里安·巴尔加斯·阿奎莱拉的提交极值很容易做的,是布雷特的选择的选择。

内容

存在的问题:

今天早上,我被要求帮助客户找到当地山峰(最小值,最大值)在一些医疗设备的跟踪。信号不相关的细节;重要的是信号是锯齿状,与许多当地的极值。这显然不是客户——或者我!——想做手工。此外,当然,可能会有更多的痕迹,我们想要重复分析,所以任何算法我们发达应该能够被整合在一个自动化程序。我的第一想法是MATLAB的文档搜索极值检测。我发现信号处理Blockset峰值检测块,发现局部最小值和最大值,但解决方案,当然,需要仿真软件。金宝appMATLAB的极客,我,我想这么做完全是在m。接下来,尽管实现自己的算法不会太难,我想寻找别人的极值检测器的实现。(没有意义重新发明轮子!)

找到当地的最大值和最小值

快速搜索了卡洛斯的高评级,much-downloaded极值。我高兴地抓住他的代码和测试旋转。结果:问题解决了!考虑下面的人工噪声数据:
t = 0:π/十六*π;y =罪(t) *兰德(大小(t));情节(t, y)
现在考虑是多么容易找到极值与卡洛斯的极值函数:
图绘制(t、y) [ymax, imax, ymin imin] =极值(y);持有ymax情节(t (imax),的r *ymin t (imin),“g *”)

平滑这些数据呢?

顺便说下,给定一个吵闹的来源,它可能也会很高兴有一个平滑的数据的方法。光滑的快速搜索MATLAB的帮助浏览器显示怎么做总是有用的曲线拟合工具箱:
y2 =光滑(y, 20);图绘制(t, y2) [ymax2、imax2 ymin2, imin2] =极值(y2);持有ymax2情节(t (imax2),的r *,ymin2 t (imin2)“g *”)举行
(注意,有很多选项可用于平滑。我只是实现了一个(默认)移动平均滤波器,使用20分滑动附近。)卡洛斯也捆绑与第二个函数极值EXTREMA2扩展功能的三维数据,他提供了一个很好的图形展示的实用程序代码。我看到他的函数也激发了另一个提交,调用MinimaMaxima3D。很好的工作,卡洛斯!

使用MATLAB®7.6发表

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。