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

7

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

mycell{1}

它返回结果'1'

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

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              

如果你有一个看起来不像是 double 类型的东西,在结果的那个单元格中会得到一个“NaN”:
>> c{2,2} = 'aei'

c = 

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

>> str2double(c)

ans =

     1     2
     3   NaN

+1 -> 这比我之前回答的部分更为普遍 :) - learnvst

5

你也可以尝试使用 cellfun(@str2num,mycell)

如果你有一个双精度型的单元数组:

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

你可以使用下面的代码:

mat = cellfun(@str2num,mycell)


5

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

str2num(cell2mat(mycell))

如果尺寸为400x1,则应类似于此

str2num(cell2mat(mycell'))

然而,如果您的字符串中包含不同数量的字符,即使只有一个字符串这样做也会导致问题。
mycell{1} = '2'
mycell{2} = '33'

如果你有这样的情况,
str2double(mycell)

如其他回答中所提到的那样,似乎可以很好地处理这个问题!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接