如何在数组中找到最后一个非零的元素的索引

use*_*460 2 matlab

我有一个d它的大小的矢量1x1000.它从存储随机值0来1.例如

d=[0.0076 0.4629 0.1554...0 0 0 0 ...0.0442 0 0 0 10^-7 10^-7 10^-7] 
Run Code Online (Sandbox Code Playgroud)

现在,我想获得向量的最后一个元素的索引(具有最大化索引)受到non-zero或大于10^-7).对于我的例子,有值的元素是0.0442和index=?.如何通过MATLAB实现它?谢谢大家

Jon*_*nas 5

要查找满足条件的最后一个元素,可以使用语法find(tf, 1, 'last').

在您的情况下,您希望找到超过零的某个容差的最后一个值,即

tol = 2e-7;
idx = find( abs(d)>tol, 1, 'last');
Run Code Online (Sandbox Code Playgroud)

注意:我已经使用过,abs(d)因此解决方案对输入中的负值是稳健的,并且我设置容差2e-7以增加阈值介于最可能的良好值和最可能的坏值之间的可能性(将其设置为1e-6可能更安全).