MATLAB Answers

0

How to find NaN values in a cell array.

Asked by Thirunavukkarasu Yadav on 30 Dec 2016
Latest activity Commented on by 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'.

  0 Comments

Sign in to comment.

2 Answers

Answer by Image Analyst
on 30 Dec 2016
 Accepted Answer

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

  3 Comments

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

Sign in to comment.


Answer by the cyclist
on 30 Dec 2016
Edited by 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.

  0 Comments

Sign in to comment.