# How to find NaN values in a cell array.

436 views (last 30 days)
Thirunavukkarasu Yadav on 30 Dec 2016
Commented: Image Analyst on 8 Jul 2017
This is my data:
a = {'raja' 'I' 76 56 NaN;'bala' 'R' 12 7 56;'kavi' NaN 56 5 12}
X = find(isnan(a));
I got
??? undefined function or method 'isnan'
for input arguments of type 'cell'.

Image Analyst on 30 Dec 2016
Try this to examine columns 2 onwards:
a = {'raja' 'I' 76 56 NaN;'bala' 'R' 12 7 56;'kavi' NaN 56 5 12}
b = cell2mat(cellfun(@isnan, a(:, 2:end), 'UniformOutput', false))
You'll see:
a =
3×5 cell array
'raja' 'I' [76] [56] [NaN]
'bala' 'R' [12] [ 7] [ 56]
'kavi' [NaN] [56] [ 5] [ 12]
b =
3×4 logical array
0 0 0 1
0 0 0 0
1 0 0 0

Thirunavukkarasu Yadav on 30 Dec 2016
thank you
G H on 8 Jul 2017
Why should we strart from the second line? "a(:, 2:end)"
Image Analyst on 8 Jul 2017
Well, you can start from the first column (not line as you said), if you want to check the names for nans.

the cyclist on 30 Dec 2016
Edited: the cyclist on 30 Dec 2016
Here is one way:
find(cell2mat(cellfun(@(x)any(isnan(x)),a,'UniformOutput',false)))
I had to stick the "any" command in there to deal with the strings, but I think this still does what you intend.