我有一個矢量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]
現在,我想在最後載體來獲得元素的索引(有指數最大化)受non-zero
或大於10^-7
)。對於我的示例,具有值的元素是0.0442和index=
?。如何通過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]
現在,我想在最後載體來獲得元素的索引(有指數最大化)受non-zero
或大於10^-7
)。對於我的示例,具有值的元素是0.0442和index=
?。如何通過MATLAB實現它?感謝所有
找到滿足條件的最後一個元素,你可以使用語法find(tf, 1, 'last')
。
在你的情況,你想找到的最後一個值大於一定的公差遠離零以上,即
tol = 2e-7;
idx = find(abs(d)>tol, 1, 'last');
注:我用abs(d)
,使該解決方案具有較強的抗負值在輸入中,我將容差設置爲2e-7
以增加閾值處於最可能的良好值和最可能的錯誤值(將其設置爲1e-6可能更安全)之間的可能性。
ind = find(d ~= 0);
ind(end) = % last nonzero index
d(ind(end)) = % last nonzero element
您可以添加閾值:ind = find(d > 1e-7)
如果你也有消極的數據,你可以添加閾值一樣ind = find(d > 1e-7 | d < -1e-7)
怎麼樣,如果我想忽略10^-7(非常小的值) – user3051460 2014-11-04 07:33:32
可以使用的組合max
和cumsum
-
tol = 1e-7; %// tolerance value
[~,index] = max(cumsum(d>tol))
良好'last',謝謝。 – Rashid 2014-11-04 07:56:31
我認爲它必須是idx = find(abs(d)> tol,1,'last'); – user3051460 2014-11-04 08:13:10
@ user3051460:哎呀,這是一個非常致命的錯字! – Jonas 2014-11-04 08:14:52