首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Matlab数组中数值搜索所有最接近于零的值?

如何在Matlab数组中数值搜索所有最接近于零的值?
EN

Stack Overflow用户
提问于 2015-04-13 14:20:43
回答 2查看 725关注 0票数 2

我得到了一些带有“零”的正函数的数值数据,但是,这些零都不是零。我想提取所有这些零值的位置,并想知道最好的方法是什么。下面是一个与我想要解决的类似的人为示例,并给出了数值、相邻差异和这些差异的符号的说明性图:

代码语言:javascript
复制
a = [ 0.0062 ; 0.0041 ; 0.0021 ; 0.0003 ; 0.0015 ; 0.0031 ; 0.0045 ; 0.0059 ; 0.0062 ; 0.0041 ; 0.0021 ; 0.0003 ; 0.0015 ; 0.0031 ; 0.0045 ; 0.0059 ]/0.0062 ;
d = diff(a) ;

r = -3/2:0.5:length(a)/2-4/2 ;

close all ;
hold on ;

plot( r, a ) ;
plot( r(1:length(d)), d ) ;
plot( r(1:length(d)), sign(d) ) ;

它产生:

根据我所做的,我可以遍历数组并找到差异数组的符号从-1到1的所有位置。两个问题:

  1. 有更好的方法来做这个比一个循环吗?
  2. 有没有更好的方法来做这样的搜索所有迷你?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-13 14:28:46

,查找差值从正向负变化的值

代码语言:javascript
复制
indices = find(diff(sign(diff(a)))==2)+1;

在您的示例中,这将给出

代码语言:javascript
复制
indices =
     4
    12

根据您想要实现的目标,可以直接找到最接近于-零值的,如下所示:

代码语言:javascript
复制
b = abs(a);
indices = find(b==min(b))

这也给了

代码语言:javascript
复制
indices =
     4
    12

请注意,这将找到最接近于零的值的索引,除非几个值之间存在联系,在这种情况下,它返回多个索引。

票数 4
EN

Stack Overflow用户

发布于 2015-04-13 14:29:45

your_data为例,执行1./your_data,然后使用findpeaks。有关findpeaks的更多选项,请参见文档,包括为要查找的最低峰值提供重持有值的可能性。应该会有帮助的。

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

https://stackoverflow.com/questions/29607685

复制
相关文章

相似问题

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