Finding integers in an array.
28 ビュー (過去 30 日間)
古いコメントを表示
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
0 件のコメント
採用された回答
Matt Fig
2011 年 6 月 10 日
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.
7 件のコメント
Jan
2013 年 1 月 11 日
@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
2013 年 1 月 11 日
Jan Siman: Sorry. You're right. I should have posted this question on another post.
Your answer works for me.
R = find(M==floor(M))
Thanks a lot
その他の回答 (2 件)
Andrei Bobrov
2011 年 6 月 10 日
l = isnumeric(V)&rem(V,1)==0;
ii = find(l,1,'first'); % 2
ValInt = V(ii); % 1 and 3
5 件のコメント
Yella
2011 年 6 月 10 日
%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.
2 件のコメント
Matt Fig
2011 年 6 月 10 日
Yella, there is nothing wrong with using a FOR loop for this problem!
I would only add that your code can be simplified:
for ii = 1:numel(x)
if floor(x(ii))==x(ii) % Only integers - use x(ii)==x(ii) or ~isnan(x(ii))
idx = ii; % The index of the first non-nan
val = x(ii); % The value at idx.
break
end
end
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!