web-dev-qa-db-ja.com

セルを2倍に変換

_>> 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
_
9
user1532230

cellfun によってクエリされた isnumeric で非数値を検索します。 論理インデックス とともに使用して、数値を抽出します。

C = [{1} {2} ; {'@CF'} {2}];
isnum = cellfun(@isnumeric,C);
result = NaN(size(C));
result(isnum) = [C{isnum}];
7
Gunther Struyf
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
12
tmpearce

さて、ここではデータ型が混在しているため、それを行うための非常に簡単な方法はありません。

データが必要な場所がわかっている場合、私が考える最も簡単な方法は、単に_cell2mat_を使用することです。

IE:cell2mat(C(1,1))は1をdoubleとして返します。

1
Ben A.