cmcc 发表于 2007-10-16 16:34

如何求离散数列的局部最值

上一个问题自己已经搞出来了,谢谢大家!

如果有一个数组A=
我用plot画出了连续的线
现在想求出数组局部的最大值和最小值,应该用什么思路呢,搜了一下,没有发现有类似的思路呢:@(

[ 本帖最后由 eight 于 2007-10-16 17:27 编辑 ]

花如月 发表于 2007-10-16 16:46

貌似精华帖子里就有一个例子,论坛里肯定讨论过请你再找找。用的好像是差分的求解办法,效果很好

hyl2323 发表于 2007-10-16 16:48

局部最值?你的意思是求极值吧!a(find(a(2:1:end-1)>=a(1:1:end-2)&a(2:1:end-1)>=a(3:1:end)+1)),大致思路。

eight 发表于 2007-10-16 17:27

这个问题我至少回答过两次,自己搜索一下版面,其中一个方法楼上已经给出提示,我的方法也给出具体代码:就是一个 extr 函数,非 matlab 自带的函数

[ 本帖最后由 ChaChing 于 2009-12-7 22:00 编辑 ]

donkeyxu 发表于 2007-10-16 20:21

回复 #4 eight 的帖子

我记得看过,但是我搜索不到了。eight,你最好给出有效的关键词,不然找不到。

花如月 发表于 2007-10-16 20:34

原帖由 donkeyxu 于 2007-10-16 20:21 发表 http://www.chinavib.com/forum/images/common/back.gif
我记得看过,但是我搜索不到了。eight,你最好给出有效的关键词,不然找不到。
我真是服了, 搜索个帖子还得找版主。求什么就用什么关键词搜:极值点

第一个就可以看到这个帖子

http://www.chinavib.com/forum/viewthread.php?tid=46984

[ 本帖最后由 花如月 于 2007-10-16 20:35 编辑 ]

donkeyxu 发表于 2007-10-16 20:49

回复 #6 花如月 的帖子

多谢。diff学到了呀。顺便创作个:
求a(i)>a(i-1)&a(i)>a(i+1)的很好弄:

a(find(diff(sign(diff(a)))<0)+1)

但如果求a(i)>=a(i-1)&a(i)>=a(i+1),我看非要for k=1:length(a)循环下不可.

[ 本帖最后由 donkeyxu 于 2007-10-16 20:52 编辑 ]

eight 发表于 2007-10-16 23:24

原帖由 donkeyxu 于 2007-10-16 20:49 发表 http://www.chinavib.com/forum/images/common/back.gif
a(find(diff(sign(diff(a)))=a(i-1)&a(i)>=a(i+1),我看非要for k=1:length(a)循环下不可.

请认真阅读我给出的 extr 函数。需要补充说明一点,这个函数不是我写的,但是基本上能处理所有的极值点情况
页: [1]
查看完整版本: 如何求离散数列的局部最值