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

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


>> whos C
  Name      Size            Bytes  Class    Attributes

  C         2x2               478  cell  

我怎样才能转换Cdouble这样:

>> C
C = 
1    2
NaN  2

我试过了str2double(C)。它返回:

   NaN   NaN
   NaN   NaN
4

3 回答 3

12
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
于 2012-07-17T15:47:00.050 回答
7

使用isnumeric 查找由 cellfun查询的非数值。将其与逻辑索引一起使用以提取数值:

C = [{1} {2} ; {'@CF'} {2}];
isnum = cellfun(@isnumeric,C);
result = NaN(size(C));
result(isnum) = [C{isnum}];
于 2012-07-17T15:51:07.597 回答
1

好吧,这里有混合数据类型,所以没有一个非常直接的方法可以做到这一点。

我能想到的最简单的方法是,如果你知道你想要的数据在哪里,那就是简单地使用cell2mat

IE:cell2mat(C(1,1))将返回 1 作为双精度数。

于 2012-07-17T15:45:51.400 回答