Convert cell to double

好久不见. 提交于 2020-01-01 08:59:10

问题


>> 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

回答1:


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}];



回答2:


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

C = 

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

D = cellfun(@isnumeric,C);
C(~D)={nan}

C = 

    [  1]    [2]
    [NaN]    [2]

cell2mat(C)

ans =

     1     2
   NaN     2



回答3:


Well, you have mixed data types here so there isn't a very straight forward way to do it.

The easiest way I can think of, if you know where the data is you want, is to simply use cell2mat

IE: cell2mat(C(1,1)) would return 1 as a double.



来源:https://stackoverflow.com/questions/11525996/convert-cell-to-double

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!