Convert cell to array in matlab

只愿长相守 提交于 2019-11-28 00:58:05

问题


I have a certain cell of size 400x1. It basically consists of numbers in the form of string. I mean when I do

mycell{1}

it gives result '1'

So you can see the number 1 is in the form of string. How can I convert this into a numeric array?


回答1:


Like this if the size(mycell) is 400x1 . . . . .

str2num(cell2mat(mycell))

... or like this if the size is 1x400

str2num(cell2mat(mycell'))

However, this will cause problems if any of your strings contain a different number of characters, i.e.

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

If you have a case like this,

str2double(mycell)

...seems to handle this ok as mentioned in the other answer!




回答2:


str2double(mycell)

Provided that you have an array of things that look like doubles:

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

If you have something that doesn't look like a double, you'll get a NaN in that cell in the result:

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

c = 

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

>> str2double(c)

ans =

     1     2
     3   NaN



回答3:


Also you can try cellfun(@str2num,mycell) If you have a cell array of doubles:

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

you can try

mat = cellfun(@str2num,mycell)



来源:https://stackoverflow.com/questions/10987542/convert-cell-to-array-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!