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

时间:2012-06-11 21:07:45

标签: matlab number-formatting

我有一个大小为400x1的单元格。它基本上由字符串形式的数字组成。我的意思是当我做的时候

mycell{1}

它会给出结果'1'

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

3 个答案:

答案 0 :(得分:7)

str2double(mycell)

如果您有一系列看起来像双打的东西:

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

如果您的某些内容看起来不像是双重内容,则结果会在该单元格中显示NaN

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

c = 

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

>> str2double(c)

ans =

     1     2
     3   NaN

答案 1 :(得分:5)

如果size(mycell)为400x1,则为此。 。 。 。 。

str2num(cell2mat(mycell))

...或者如果尺寸是1x400

那么这样
str2num(cell2mat(mycell'))

但是,如果您的任何字符串包含不同数量的字符,即

,这将导致问题
mycell{1} = '2'
mycell{2} = '33'

如果你有这样的案例,

str2double(mycell)

...似乎在另一个答案中提到了这个问题!

答案 2 :(得分:4)

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

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

你可以尝试

mat = cellfun(@str2num,mycell)