Selection of priority data
4 次查看(过去 30 天)
显示 更早的评论
Hello,
I'm trying to solve a problem. I have a vector of data such as:
data=[3;4;8;NaN;NaN;NaN;7;4;3;NaN;NaN;2;3;NaN;9]
length of data can be variable and NaN value phases can happen everywhere within a vector.
I need to find the first NaN value and count the number of next NaN. However, I do not want to take into account any other NaN value after the first portion of NaN.
In this case my result would be: First NaN at raw 4. Three NaN values. I know how to use the function find, indeed this is the code I used as far:
findNaN = find(isnan(data));
The problem is that in that way I will get the others NaN too that I do not want to locate.
Any idea?
Thanks, Giuseppe
0 个评论
采纳的回答
Shoaibur Rahman
2014-12-27
data=[3;4;8;NaN;NaN;NaN;7;4;3;NaN;NaN;2;3;NaN;9];
findNaN = find(isnan(data));
first = findNaN(1);
numberNaN = 1;
for k = first+1:length(data)
if isnan(data(k))
numberNaN = numberNaN+1;
else break
end
end
first, numberNaN
0 个评论
更多回答(2 个)
Image Analyst
2014-12-27
If you're lucky enough to own the Image Processing Toolbox, it's easy. Just find the nan's, label then, and count the number in the first group. Here is the code:
labeledVector = bwlabel(isnan(data)) % Find nan's and label.
numberOfNansInFirstGroup = sum(labeledVector == 1) % Count the # of elements in group #1
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!