MATLAB: Check if all vector elements have same sign

signvector

Is there an efficient (and easy) way to check if all elements of a vector have the same sign (not caring about zero values)?
I can think of applying sign(v) and checking if all elements is equal to the first one after having removed all elements where sign(v)==0, but this fells somewhat clumsy. Is there an easier or more efficient way?

Best Answer

true if all non-zero elements of V have the same sign:
~any(diff(sign(V(V~=0))))