如何去除数组中的js 数组最大值最小值和最小值后求剩余数组的极值平

博客访问: 2391690
博文数量: 884
博客积分: 10132
博客等级: 上将
技术积分: 7805
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
Matlab中如何求一个序列的极值?
我们知道,在Matlab中有专门求序列最大值和最小值的函数,分别是Max 和 Min,但是有时候我们不满足于求整个序列的最值,而是对序列的极值,也就是局部的最值感兴趣。对于解析函
数,这个比较简单,只要令一阶倒数为零求出对应的自变量就行了。
然而对于离散的序列,这种方法显然不可行,一个比较费劲或者说比较笨的方法就是手工查找,仔细考察序
列的每一个值,用手工的方法将极值逐一挑出来。然而对于比较长的序列,这种方法显然不可行。我们期望有一个自动判断序列中某个点是极值点的函数,把这个艰
巨的任务交给Matlab,让Matlab帮我们去找,这样可以
节省我们宝贵的时间,把更多的时间放在更有意义的事情上面。
假设我们有一个长度为N的序列v(N,1),下面就是Matlab中实现求v的极值点的命令,其中用到了逻辑数组下标的方法:
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 = [ L false];
Lmin =& [ L 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');
plot(tmax, vmax, 'r+');
plot(tmin,vmin, 'g+');
结果如图所示:红色十字代表极大值,绿色十字代表极小值。
阅读(14806) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 二维数组最大值最小值 的文章

 

随机推荐