将一个字符串数组转换为数字向量。

3

我有这个:

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

我该如何将它转换为数字向量?

d = 2.5   3.5

str2num(d) 表示“需要字符串或字符数组输入”。实际数组中有许多值,因此不要逐个元素进行操作。 - abhishek
1
这个问题已经被回答了很多次,但请看我的回答,了解如何在单元数组的每个元素上应用str2num(或更好的str2double)。 - gevang
1个回答

7

假设您有一个单元格字符串值的数组,您可以使用cellfun在每个条目上应用str2num转换。输出将是转换后的值的向量/矩阵。

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

然而,在使用字符串转数字时,最好使用str2double,而不是str2num。从文档中可以看到:

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

dVec = cellfun(@str2double, d);

更新:正如@yuk所指出的那样,您可以直接在单元数组上调用str2double()以获得相同的输出。
dVec = str2double(d);

请注意,使用 str2num() 的相同调用将会出现 "必须是字符串或字符串数组" 错误。

4
不需要使用cellfun函数。str2double函数可以完美地处理单元格数组。 - yuk
1
@yuk 好观点。已更新。顺便提一下,这仅适用于 str2double(),而不是 str2num() - gevang
str2double比使用string2mat的cellfun慢大约10-20%。 - Max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接