求极值点
max 和min只能求出向量的最值点,有什么办法找出极值点吗?也就是说要求x(i)<x(i+1)并且x(i)<x(i-1)的点
我试过用循环,不过结果不理想,每次得到的极值点都不同
谢拉!先
[ 本帖最后由 mst-tum 于 2007-5-4 20:08 编辑 ] 不妨将你的程序贴一下.
另:可以用现成的命令:fminunc, or fminsearch.
一般方法为:先画图,再在附近搜索极值点.
[ 本帖最后由 xjzuo 于 2007-5-4 20:17 编辑 ] 原帖由 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
回复 #3 eight 的帖子
:lol ,谢谢拉。大家都好勤劳,假期还在。本来没指望这么快有回复的。我先学习下,不懂再请教。 学习了以上的程序,还是有些地方不懂。
这里第27行的m指的是什么啊?
是不是写错了,应该是n吧? 原帖由 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:20 编辑
居然不会用{:{44}:} ,到底返回什么值呢? 本帖最后由 Happy99 于 2010-11-5 09:10 编辑
hyyly 发表于 2010-11-5 08:18 http://www.chinavib.com/static/image/common/back.gif
...到底返回什么值呢?
什麼问题?
个人水平有限, 建议说清楚些 这个不是用imregionalmax和imregionalmin就可以了吗? 回复 Happy99 的帖子
我的意思是 eight发的代码我不会使用,不过没关系,我找到更好的了。谢谢 寻找极大值:
% 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]