How to find the lowest and highest rows in a column vector which contain a value.

1 次查看(过去 30 天)
So, I have a 20x1 vector (A) shown below. How would I find the row number for the lowest and highest row that contain a value? In the vector below the lowest would be row 6, and the highest would be row 17. Thanks.
A =
NaN
NaN
NaN
NaN
NaN
1
1
1
NaN
NaN
NaN
1
1
1
NaN
NaN
1
NaN
NaN
NaN

采纳的回答

Akira Agata
Akira Agata 2018-1-31
idx = ~isnan(A);
lowestRow = min(find(idx));
highestRow = max(find(idx));
  5 个评论
Nathan B
Nathan B 2018-1-31
编辑:Nathan B 2018-1-31
For the code below what would I put where I have written "here" so that the if statement only runs when A is not NaN?
for y = lowestRow:1:highestRow
if "here"
disp(A(y))
end
end
Jos (10584)
Jos (10584) 2018-1-31
You also forgot the for-loop counter
for K = lowestRow:highestRow
if ~isnan(A(K))
disp(K)
end
end
However,
tf = ~isnan(A)
disp( A(tf) )
would almost do the same and is much more efficient

请先登录,再进行评论。

更多回答(1 个)

Jos (10584)
Jos (10584) 2018-1-31
idx = ~isnan(A);
lowestRow = find(idx, 1, 'first')
highestRow = find(idx, 1, 'last')

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by