2012-06-11 46 views
6

我有一个大小为400x1的特定单元格。它基本上由字符串形式的数字组成。我的意思是,当我做将单元格转换为matlab中的数组

mycell{1} 

它给出的结果'1'

所以,你可以看到1号是字符串的形式。我怎样才能将其转换为数组数组?

回答

5

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

str2num(cell2mat(mycell)) 

...或者是这样,如果大小是1x400

str2num(cell2mat(mycell')) 

但是,这会造成问题,如果你的任何字符串包含不同数量的字符,即

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

如果您有这样的情况,

str2double(mycell) 

...似乎处理这个确定正如在其他答案中提到的!

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

+1 - >这是不是我的答案:)原有的部分更普遍 – learnvst

3

您也可以尝试cellfun(@str2num,mycell) 如果你有加倍的电池阵列:

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

你可以尝试

mat = cellfun(@str2num,mycell)

相关问题