mst-tum 发表于 2007-5-4 20:01

求极值点

max 和min只能求出向量的最值点,有什么办法找出极值点吗?
也就是说要求x(i)<x(i+1)并且x(i)<x(i-1)的点
我试过用循环,不过结果不理想,每次得到的极值点都不同
谢拉!先

[ 本帖最后由 mst-tum 于 2007-5-4 20:08 编辑 ]

xjzuo 发表于 2007-5-4 20:16

不妨将你的程序贴一下.
另:可以用现成的命令:fminunc, or fminsearch.
一般方法为:先画图,再在附近搜索极值点.

[ 本帖最后由 xjzuo 于 2007-5-4 20:17 编辑 ]

eight 发表于 2007-5-4 20:19

原帖由 mst-tum 于 2007-5-4 20:01 发表 http://forum.vibunion.com/forum/images/common/back.gif
max 和min只能求出向量的最值点,有什么办法找出极值点吗?
也就是说要求x(i)

可参考 emd 程序中的 extr.m,即:


d = diff(x);
n = length(d);
d1 = d(1:n-1);
d2 = d(2:n);
indmin = find(d1.*d2<0 & d1<0)+1;
indmax = find(d1.*d2<0 & d1>0)+1;
if any(d==0)

imax = [];
imin = [];

bad = (d==0);
dd = diff();
debs = find(dd == 1);
fins = find(dd == -1);
if debs(1) == 1
    if length(debs) > 1
      debs = debs(2:end);
      fins = fins(2:end);
    else
      debs = [];
      fins = [];
    end
end
if length(debs) > 0
    if fins(end) == m
      if length(debs) > 1
      debs = debs(1:(end-1));
      fins = fins(1:(end-1));
      else
      debs = [];
      fins = [];
      end      
    end
end
lc = length(debs);
if lc > 0
    for k = 1:lc
      if d(debs(k)-1) > 0
      if d(fins(k)) < 0
          imax = ;
      end
      else
      if d(fins(k)) > 0
          imin = ;
      end
      end
    end
end

if length(imax) > 0
    indmax = sort();
end
if length(imin) > 0
    indmin = sort();
end

end

mst-tum 发表于 2007-5-4 20:33

回复 #3 eight 的帖子

:lol ,谢谢拉。大家都好勤劳,假期还在。本来没指望这么快有回复的。
我先学习下,不懂再请教。

mst-tum 发表于 2007-5-14 21:50

学习了以上的程序,还是有些地方不懂。
这里第27行的m指的是什么啊?
是不是写错了,应该是n吧?

eight 发表于 2007-5-14 21:51

原帖由 mst-tum 于 2007-5-14 21:50 发表 http://www.chinavib.com/forum/images/common/back.gif
学习了以上的程序,还是有些地方不懂。
这里第27行的m指的是什么啊?
是不是写错了,应该是n吧?

m = length(x);

其实仔细想想就猜到应该是原信号的程度

hyyly 发表于 2010-11-5 08:18

本帖最后由 hyyly 于 2010-11-5 08:20 编辑

居然不会用{:{44}:} ,到底返回什么值呢?

Happy99 发表于 2010-11-5 09:09

本帖最后由 Happy99 于 2010-11-5 09:10 编辑

hyyly 发表于 2010-11-5 08:18 http://www.chinavib.com/static/image/common/back.gif
...到底返回什么值呢?

什麼问题?
个人水平有限, 建议说清楚些

qibbxxt 发表于 2010-11-5 10:11

这个不是用imregionalmax和imregionalmin就可以了吗?

hyyly 发表于 2010-11-5 12:46

回复 Happy99 的帖子

我的意思是 eight发的代码我不会使用,不过没关系,我找到更好的了。谢谢

zhouyang664 发表于 2010-11-5 21:57

寻找极大值:
% from MATLAB-Wiki-FAQ
function index = localmax(x)
index = find( diff( sign( diff() ) ) < 0 );
LMax = x(index)
另外请参考副教授花如月的经典之作:
http://forum.vibunion.com/forum-viewthread-tid-53300-highlight-%C0%EB%C9%A2%D0%F2%C1%D0.html
页: [1]
查看完整版本: 求极值点