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

1 vue (au cours des 30 derniers jours)
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

Réponse acceptée

Akira Agata
Akira Agata le 31 Jan 2018
idx = ~isnan(A);
lowestRow = min(find(idx));
highestRow = max(find(idx));
  5 commentaires
Nathan B
Nathan B le 31 Jan 2018
Modifié(e) : Nathan B le 31 Jan 2018
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) le 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

Connectez-vous pour commenter.

Plus de réponses (1)

Jos (10584)
Jos (10584) le 31 Jan 2018
idx = ~isnan(A);
lowestRow = find(idx, 1, 'first')
highestRow = find(idx, 1, 'last')
  1 commentaire
Nathan B
Nathan B le 31 Jan 2018
Modifié(e) : Nathan B le 31 Jan 2018
Thanks. Also thanks for helping with the if statement.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by