Search code examples
matlabdoublecell-array

Convert cell to double


>> C = [{1} {2} ; {'@CF'} {2}] 
C = 

[  1]    [2]
'@CF'    [2]


>> whos C
  Name      Size            Bytes  Class    Attributes

  C         2x2               478  cell  

How can I convert C into double so that:

>> C
C = 
1    2
NaN  2

I've tried str2double(C). It returns:

   NaN   NaN
   NaN   NaN

Solution

  • Find the non numeric values with isnumeric, queried by cellfun. Use that with logical indexing to extract the numeric values:

    C = [{1} {2} ; {'@CF'} {2}];
    isnum = cellfun(@isnumeric,C);
    result = NaN(size(C));
    result(isnum) = [C{isnum}];