Convert cell to array in matlab

匿名 (未验证) 提交于 2019-12-03 00:46:02

问题:

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)



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