在matlab中将单元格转换为数组

raj*_*pit 6 matlab number-formatting

我有一个大小为400x1的细胞.它基本上由字符串形式的数字组成.我的意思是当我这样做

mycell{1}
Run Code Online (Sandbox Code Playgroud)

它给出了结果 '1'

所以你可以看到数字1是字符串的形式.如何将其转换为数字数组?

Lam*_*eek 7

str2double(mycell)
Run Code Online (Sandbox Code Playgroud)

只要你有一系列看起来像双打的东西:

>> c = {'1' '2' ; '3' '4'}

c = 

    '1'    '2'
    '3'    '4'

>> str2double(c)

ans =

     1     2
     3     4

>> whos ans
  Name      Size            Bytes  Class     Attributes

  ans       2x2                32  double              
Run Code Online (Sandbox Code Playgroud)

如果你有一些看起来不像双重的东西,你将NaN在结果中得到一个单元格:

>> c{2,2} = 'aei'

c = 

    '1'    '2'  
    '3'    'aei'

>> str2double(c)

ans =

     1     2
     3   NaN
Run Code Online (Sandbox Code Playgroud)


lea*_*vst 5

如果size(mycell)是400x1 就像这样.....

str2num(cell2mat(mycell))
Run Code Online (Sandbox Code Playgroud)

......或者像这样,如果尺寸是1x400

str2num(cell2mat(mycell'))
Run Code Online (Sandbox Code Playgroud)

但是,如果您的任何字符串包含不同数量的字符,这将导致问题,即

mycell{1} = '2'
mycell{2} = '33'
Run Code Online (Sandbox Code Playgroud)

如果你有这样的案例,

str2double(mycell)
Run Code Online (Sandbox Code Playgroud)

......似乎在其他答案中提到了这个正常!


小智 5

您也可以尝试cellfun(@str2num,mycell) 如果您有一个双精度元胞数组:

mycell = {'1.56548524'; '1.5265'; '-4.2616' ;'-0.2154' ;'2.15'};

你可以试试

mat = cellfun(@str2num,mycell)