matlab 中序列求极值的方法,Matlab中求序列的极值

我们知道,在Matlab中有专门求序列最大值和最小值的函数,分别是Max 和 Min,但是有时候我们不满足于求整个序列的最值,而是对序列的极值,也就是局部的最值感兴趣。对于解析函 数,这个比较简单,只要令一阶倒数为零求出对应的自变量就行了。

然而对于离散的序列,这种方法显然不可行,一个比较费劲或者说比较笨的方法就是手工查找,仔细考察序 列的每一个值,用手工的方法将极值逐一挑出来。然而对于比较长的序列,这种方法显然不可行。我们期望有一个自动判断序列中某个点是极值点的函数,把这个艰 巨的任务交给Matlab,让Matlab帮我们去找,这样可以 节省我们宝贵的时间,把更多的时间放在更有意义的事情上面。

假设我们有一个长度为N的序列v(N,1),下面就是Matlab中实现求v的极值点的命令,其中用到了逻辑数组下标的方法:

N = 100;

v = rand (N,1);

t = 0:length(v)-1;

Lmax = diff(sign(diff(v)))== -2; % logic vector for the local max value

Lmin = diff(sign(diff(v)))== 2; % logic vector for the local min value

% match the logic vector to the original vecor to have the same length

Lmax = [false; Lmax; false];

Lmin =  [false; Lmin; false];

tmax = t (Lmax); % locations of the local max elements

tmin = t (Lmin); % locations of the local min elements

vmax = v (Lmax); % values of the local max elements

vmin = v (Lmin); % values of the local min elements

% plot them on a figure

plot(t,v);

xlabel('t'); ylabel('v');

hold on;

plot(tmax, vmax, 'r+');

plot(tmin,vmin, 'g+');

hold off;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值