如何求一维数据的局部极小(或极大)值
求教:用matlab如何实现一组一维数据的局部极小(或极大)值及其对应横坐标的位置或定义域的范围,谢谢! help minhlep max =max(y(m:n));
a是值 b是位置
好象是这样 原帖由 newsgae 于 2007-5-11 13:45 发表 http://forum.vibunion.com/forum/images/common/back.gif
求教:用matlab如何实现一组一维数据的局部极小(或极大)值及其对应横坐标的位置或定义域的范围,谢谢!
这个问题之前刚讨论过,以后请多搜索一下论坛
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
谢谢,我搜索了,感觉这个是针对函数形式的 原帖由 newsgae 于 2007-5-12 10:51 发表 http://forum.vibunion.com/forum/images/common/back.gif
谢谢,我搜索了,感觉这个是针对函数形式的
你的意思是对于数据不成立?一维数据是连续函数的离散表示,所以应该不存在这个问题 好的,谢谢 。
我尝试了另外2个函数, imregionmax,imregionmin, 能够找到极值对应的位置,
谢谢啦。
页:
[1]