2013-03-16 211 views
3

的矢量我有这样的:转换字符串数组为数字

d = {'2.5', '3.5'}; 
d = 
'2.5' '3.5' 

如何将其转换为数字向量?

d = 2.5 3.5 
+0

str2num(d)表示'需要字符串或字符数组输入'。实际数组中有很多值,所以不要一个一个地去做。 – abhishek 2013-03-16 00:38:10

+1

已经被回答了很多次,但是看到我对如何在单元阵列的每个元素上应用'str2num'(或更好的'str2double')的回答。 – gevang 2013-03-16 00:58:14

回答

6

既然你有字符串值的单元阵列,可以使用cellfun对每个条目适用str2num转换。输出将是转换值的向量/矩阵。

d = {'2.3','3.5'} 
dVec = cellfun(@str2num, d); 

但是,你正在使用更好比str2doublestr2num.documentation

注:str2num使用eval函数的输入参数转换。 如果字符串包含对函数的调用,则可能会出现副作用。 使用str2double可以避免一些这些副作用。

dVec = cellfun(@str2double, d); 

更新:作为@yuk所指出的,你可以直接在单元阵列相同的输出上调用str2double()

dVec = str2double(d); 

注意与str2num()相同的呼叫会给“必须是一个字符串或字符串数​​组”错误。

+4

你不需要cellfun。 str2double完美适用于单元阵列。 – yuk 2013-03-16 01:50:41

+1

@yuk好点。更新。作为一个侧面说明,虽然这只适用于'str2double()',而不适用'str2num()'。 – gevang 2013-03-16 04:14:14

+0

str2double比使用string2mat的cellfun慢10-20%左右。 – Max 2017-01-20 19:01:43