newsgae 发表于 2007-5-11 13:45

如何求一维数据的局部极小(或极大)值

求教:用matlab如何实现一组一维数据的局部极小(或极大)值及其对应横坐标的位置或定义域的范围,谢谢!

w89986581 发表于 2007-5-11 13:56

help min
hlep max

yangch 发表于 2007-5-11 15:06

=max(y(m:n));
a是值 b是位置
好象是这样

eight 发表于 2007-5-11 21:38

原帖由 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

谢谢,我搜索了,感觉这个是针对函数形式的

eight 发表于 2007-5-12 10:54

原帖由 newsgae 于 2007-5-12 10:51 发表 http://forum.vibunion.com/forum/images/common/back.gif
谢谢,我搜索了,感觉这个是针对函数形式的

你的意思是对于数据不成立?一维数据是连续函数的离散表示,所以应该不存在这个问题

newsgae 发表于 2007-5-14 23:29

好的,谢谢 。
我尝试了另外2个函数, imregionmax,imregionmin, 能够找到极值对应的位置,
谢谢啦。
页: [1]
查看完整版本: 如何求一维数据的局部极小(或极大)值