How to find the lowest and highest rows in a column vector which contain a value.
1 view (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
Akira Agata
on 31 Jan 2018
idx = ~isnan(A);
lowestRow = min(find(idx));
highestRow = max(find(idx));
5 Comments
Jos (10584)
on 31 Jan 2018
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
More Answers (1)
Jos (10584)
on 31 Jan 2018
idx = ~isnan(A);
lowestRow = find(idx, 1, 'first')
highestRow = find(idx, 1, 'last')
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!