tmp = find(A > 0); %// A is a matrix
value = tmp(1);
在这种情况下,我想获得数组find(A > 0)
的第一个值。我怎样才能只使用一行而不是两行?
答案 0 :(得分:2)
要获取条件中第一个true
值的索引,可以使用:
ix = find(A>0, 1, 'first');
请注意,ix
不一定是单个元素;如果条件未在任何地方得到满足,ix
将为空。
通常,要返回条件中k
值的第一个true
索引,请使用:
ix = find(A>0, k, 'first');
或者,对于真实的最后k
个索引:
ix = find(A>0, k, 'last');
同样需要注意:不要指望返回的值有k
个元素;请务必查看size
的{{1}}或numel
。
答案 1 :(得分:1)
很容易:
A = rand(300,1);
T = find(A>0.8,1)
T =
4
k = find(X,n)
返回对应于X中非零元素的前n个索引。
答案 2 :(得分:0)
要查找满足条件n
的 A>0
- 值(不一定是第一个),您可以使用
value = A(find(cumsum(A>0)==n, 1));
例如,
>> A = [1 0 5 0 4 0 2 -3];
>> n = 2;
>> value = A(find(cumsum(A>0)==n, 1))
value =
5
工作原理:
只要条目满足条件cumsumn(A>0)
, A>0
就会增加。在上面的例子中,
>> A
A =
1 0 5 0 4 0 2 -3
>> cumsum(A>0)
ans =
1 1 2 2 3 3 4 4
因此cumsum(A>0)
第一次到达n
的索引是您想要的A
条目的索引。