6

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

mycell{1}

它给出了结果'1'

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

4

3 回答 3

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
于 2012-06-11T21:11:48.687 回答
5

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

str2num(cell2mat(mycell))

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

str2num(cell2mat(mycell'))

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

mycell{1} = '2'
mycell{2} = '33'

如果你有这样的情况,

str2double(mycell)

...似乎可以处理这个问题,如另一个答案中所述!

于 2012-06-11T21:09:29.220 回答
4

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

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

you can try

mat = cellfun(@str2num,mycell)

于 2014-03-05T14:59:48.793 回答