| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1843 人关注过本帖
标题:找函数极大值点的再讨论
只看楼主 加入收藏
cc2005726
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-11-22
收藏
 问题点数:0 回复次数:0 
找函数极大值点的再讨论
在发这个帖之前先搜了下,有找极值点的代码如下:
y是一个数据
yf=y(2:end-1)-y(1:end-2);   %前向差分
yb=y(2:end-1)-y(3:end);     %后向差分
I=find(yf.*yb>=0);             %寻找极值点(不考虑首尾两点)
I=I+1;
则I是极值点的下标了。
还有
%  data是你的数据
find(diff(sign(diff(data)))==-2)+1;
% 找到极大值的位置
find(diff(sign(diff(data)))==2)+1;
% 找到极小值的位置

但这么做不能解决在极值点连续重复几次出现的情况,比如:
y=[ 3 1 4 4 6 6 2];
若用第一种方法找极大值点,
yf=y(2:end-1)-y(1:end-2);   %前向差分
yb=y(2:end-1)-y(3:end);     %后向差分
I=I=find(yf>=0&yf.*yb>=0&yb>=0);%寻找极值点(不考虑首尾两点)
I=I+1;
则找到的极值点的下标是3 5 6,错y(3)当成极大值点了

若用第二种方法,则I为空阵。
请问在这种情况下如何找到极大值点呢?要求或极值点连续出现,则以最开始出现的那一个极值点为准。
还是以y=[ 3 1 4 4 6 6 2];为例,要求最后求出的极大值点下标就是5
搜索更多相关主题的帖子: 函数 
2009-09-08 20:35
快速回复:找函数极大值点的再讨论
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015610 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved