我得到了一些带有“零”的正函数的数值数据,但是,这些零都不是零。我想提取所有这些零值的位置,并想知道最好的方法是什么。下面是一个与我想要解决的类似的人为示例,并给出了数值、相邻差异和这些差异的符号的说明性图:
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的所有位置。两个问题:
发布于 2015-04-13 14:28:46
到,查找差值从正向负变化的值
indices = find(diff(sign(diff(a)))==2)+1;在您的示例中,这将给出
indices =
4
12根据您想要实现的目标,可以直接找到最接近于-零值的,如下所示:
b = abs(a);
indices = find(b==min(b))这也给了
indices =
4
12请注意,这将找到最接近于零的值的索引,除非几个值之间存在联系,在这种情况下,它返回多个索引。
发布于 2015-04-13 14:29:45
以your_data为例,执行1./your_data,然后使用findpeaks。有关findpeaks的更多选项,请参见文档,包括为要查找的最低峰值提供重持有值的可能性。应该会有帮助的。
https://stackoverflow.com/questions/29607685
复制相似问题