MATLAB: Find all numeric values right after the NaN values in a column vector

MATLAB: Find all numeric values right after the NaN values in a column vector

findindicesnanvector

Good evening,
I have a column vector such that
vec = [1 ; 2 ; 3 ; 4 ; Nan ; 5 ; 6 ; 7 ; 8 ; Nan ; 9 ; 10 ; 11 ; 12 ; Nan];
I would like to find extract the elements of the vector ”vec” that are located right after the NaN, such that I would get a new vector:
new_vec=[5;9]
It is very easy to find the indices of all the NaN elements, however I don’t know how to ‘shift’ those indices a place further to locate the values right after the NaN.
Thanks for your help in advance,
KMT

Best Answer

  • index = isnan(vec);
    result = vec([false; index(1:end-1)]);
    Or in one line:
    result = vec([false; isnan(vec(1:end-1))]);
    This is “logical indexing” and “shifting” is simply to insert a FALSE at the beginning.
  • Add a Comment

    Your email address will not be published. Required fields are marked *