声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1972|回复: 0

[编程技巧] matlab 用diff函数求局部极值

[复制链接]
发表于 2016-3-14 14:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  y(find(diff(sign(diff(y)))==-2)+1);
  假若 y=[3 2 4 3 5 7 9 1];
  diff(y) 是将y中后面的一个数减去前面的一个数,得到结果如下:
  -1 2 -1 2 2 2 -8
  sign(diff(y)) 中的sign是求符号函数,当数据大于0时为1,小于0时为-1,等于0 时为0,得结果如下:
  -1 1 -1 1 1 1 -1
  diff(sign(diff(y))) 其过程同上面的diff(y), 其结果如下:
  2 -2 2 0 0 -2
  find(……) 是找到上面序列中等于-2 的下标,然后再加1,(因为做一次diff后序列的数目会减小1),此处找到-2的位置是 2和6,加1后,变为3和7,对比原序列,可发现在下标为3和7处的确各有一个极大值存在。
  当使用 y(find(diff(sign(diff(y)))==-2)+1); 时,找到的则为极小值。
  其中,由find找到的为极值所在的位置,最后在y中的数据则为对应 的极值。



转自:http://blog.sina.com.cn/s/blog_c52f07550102v8wp.html

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-27 21:44 , Processed in 0.059652 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表