Constructing an if statement when a column contains only one data point and the rest are NaNs
Show older comments
Dear all,
I have the double array
2.8000 0.2333 0.0010 0.0022
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
I Want to see if each column contains at least two data points using an if statement.
For instance
for c=1:size(A,2)
if A(:,c) contains only one data point
'do that'
end
end
Accepted Answer
More Answers (2)
Image Analyst
on 11 Aug 2012
From your wording it's not clear whether you want to find "two data points" or "only one data point", since you say it both ways.
Try this:
A=[2.8000 0.2333 0.0010 0.0022
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN];
[rows columns] = size(A);
for c = 1 : columns
rowsWithNumbers = ~isnan(A(:,c));
numberOfNumbers = sum(rowsWithNumbers);
fprintf('Column #%d has %d numbers and %d NaNs\n',...
c, numberOfNumbers, rows - numberOfNumbers)
end
Results in command window:
Column #1 has 1 numbers and 5 NaNs
Column #2 has 1 numbers and 5 NaNs
Column #3 has 1 numbers and 5 NaNs
Column #4 has 1 numbers and 5 NaNs
Azzi Abdelmalek
on 11 Aug 2012
Edited: Azzi Abdelmalek
on 11 Aug 2012
ind=sum( arrayfun(@(x) ~isnan(x),A))
for k=1:length(ind)
if ind(k)>=2
%do
end
end
Categories
Find more on NaNs in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!