raj*_*pit 6 matlab number-formatting
我有一个大小为400x1的细胞.它基本上由字符串形式的数字组成.我的意思是当我这样做
mycell{1}
Run Code Online (Sandbox Code Playgroud)
它给出了结果 '1'
所以你可以看到数字1是字符串的形式.如何将其转换为数字数组?
str2double(mycell)
Run Code Online (Sandbox Code Playgroud)
只要你有一系列看起来像双打的东西:
>> 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
Run Code Online (Sandbox Code Playgroud)
如果你有一些看起来不像双重的东西,你将NaN在结果中得到一个单元格:
>> c{2,2} = 'aei'
c =
'1' '2'
'3' 'aei'
>> str2double(c)
ans =
1 2
3 NaN
Run Code Online (Sandbox Code Playgroud)
如果size(mycell)是400x1 就像这样.....
str2num(cell2mat(mycell))
Run Code Online (Sandbox Code Playgroud)
......或者像这样,如果尺寸是1x400
str2num(cell2mat(mycell'))
Run Code Online (Sandbox Code Playgroud)
但是,如果您的任何字符串包含不同数量的字符,这将导致问题,即
mycell{1} = '2'
mycell{2} = '33'
Run Code Online (Sandbox Code Playgroud)
如果你有这样的案例,
str2double(mycell)
Run Code Online (Sandbox Code Playgroud)
......似乎在其他答案中提到了这个正常!
小智 5
您也可以尝试cellfun(@str2num,mycell)
如果您有一个双精度元胞数组:
mycell = {'1.56548524'; '1.5265'; '-4.2616' ;'-0.2154' ;'2.15'};
你可以试试
mat = cellfun(@str2num,mycell)