# Finding integers in an array.

211 views (last 30 days)
NS on 10 Jun 2011
Hey Guys,
I have an column matrix that basically consists of NaNs and some integers in between them. Are there any functions in MATLAB that will help me find 1. the first integer value in the array, 2. its location 3. store the value
Thanks, NS

Matt Fig on 10 Jun 2011
V = [nan;nan;9;nan;6;7;nan;9] % An example to work with...
idx = find(V==V,1); % Location. nan never equals nan...
val = V(idx); % Value at Location.

Andrei Bobrov on 11 Jan 2013
R = find(abs(rem(M,1)) < eps(100));
Jan on 11 Jan 2013
@Ricardo: Please do not post a question as a comment to an answer of another question. New questions need a new thread. Thanks.
@Andrei: eps(100) might be wrong, if the magnitude of the data is 1e8. Either eps(M) could be better, or:
find(M==floor(M))
Ricardo Pereira on 11 Jan 2013
Jan Siman: Sorry. You're right. I should have posted this question on another post.
R = find(M==floor(M))
Thanks a lot

Andrei Bobrov on 10 Jun 2011
l = isnumeric(V)&rem(V,1)==0;
ii = find(l,1,'first'); % 2
ValInt = V(ii); % 1 and 3

Matt Fig on 10 Jun 2011
BTW andrei, I think you are meaning the call to ISNUMERIC to act as a nan filter? Your code works just fine with only a call to REM.
Andrei Bobrov on 10 Jun 2011
Matt! You're right as always
NS on 10 Jun 2011
Thanks for the help Matt and Andrei.
Andrei, your code works well. I dont know what I did wrong yesterday. I dont think I can accept two answers at the same time here. :(
Thanks for the help once again.

Yella on 10 Jun 2011
%An example to work with x = [NaN 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 Inf 1.4 2.2 1.6 1.8];
for i=1:1:length(x)
if (isnan(x(i)))
continue;
else
p=i;
break;
end
end
x_withno_nan = x(isfinite(x))
x_first=x_withno_nan(1)
It may be length but i made easily understandable for a beginner like me.

NS on 10 Jun 2011
Thanks for the help Yella. :)
Matt Fig on 10 Jun 2011
Yella, there is nothing wrong with using a FOR loop for this problem!