首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MATLAB逻辑索引求局部极大值

用MATLAB逻辑索引求局部极大值
EN

Stack Overflow用户
提问于 2015-03-11 13:33:48
回答 1查看 374关注 0票数 1

我以前在MATLAB向量中使用过逻辑索引,其条件如下

代码语言:javascript
复制
X = X(X < 6);

然而,现在我想用同样的想法找到局部极值,但要有“本地”条件。我对这样的事情感兴趣

代码语言:javascript
复制
X = X(X(i) > X(i-1) & X(i) > X(i + 1));

我知道在向量的第一个和最后一个元素中,这是行不通的,并且有更好的方法来寻找局部极值。

这个问题不同于上一个问题(Getting FFT peaks from data),因为我并不特别感兴趣于寻找最大值,而是能够使用带有“局部”条件的逻辑索引来引用向量中的相邻元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-11 14:15:30

您不能像您所描述的那样直接这样做。您必须创建额外的数据,这些数据本身可以进行逻辑测试,其输出可以用于对向量进行索引。在你的例子中,最好的方法是计算一个近似导数,然后找出这个导数的向下零点点。

代码语言:javascript
复制
x = rand(1,50);
xDiff = diff(x);
xZeroCross = diff(sign(xDiff));
indexUp = find(xZeroCross>0)+1;
indexDown = find(xZeroCross<0)+1;
figure();
plot(1:50,x,'r',indexDown,x(indexDown),'b*',indexUp,x(indexUp),'go');

此代码生成以下图,其中局部极大值为蓝色星,局部极小为绿色圆.

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28988014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档