Matlab 将字符串数组转换为数字向量
我有这个:Matlab 将字符串数组转换为数字向量,matlab,Matlab,我有这个: d = {'2.5', '3.5'}; d = '2.5' '3.5' 如何将其转换为数字向量 d = 2.5 3.5 假设您有一个字符串值的单元格数组,您可以使用cellfun对每个条目应用str2num转换。输出将是转换值的向量/矩阵 d = {'2.3','3.5'} dVec = cellfun(@str2num, d); 但是,您最好使用str2double而不是str2num。从以下位置: 注意:str2num使用eval函数转换输入参数。 如果字符串包
d = {'2.5', '3.5'};
d =
'2.5' '3.5'
如何将其转换为数字向量
d = 2.5 3.5
假设您有一个字符串值的单元格数组,您可以使用
cellfun
对每个条目应用str2num
转换。输出将是转换值的向量/矩阵
d = {'2.3','3.5'}
dVec = cellfun(@str2num, d);
但是,您最好使用str2double
而不是str2num。
从以下位置:
注意:str2num使用eval函数转换输入参数。
如果字符串包含对函数的调用,则可能会发生副作用。
使用str2double可以避免这些副作用
Update:正如@yuk指出的,您可以直接在单元数组上调用str2double()
,以获得相同的输出
dVec = str2double(d);
请注意,对
str2num()
的相同调用将给出“必须是字符串或字符串数组”错误。str2num(d)表示“需要字符串或字符数组输入”。实际数组中有很多值,所以不要逐个元素执行。已回答多次,但请参阅我的答案,了解如何在单元格数组的每个元素上应用str2num
(或更好的str2double
),您不需要cellfun。str2double可以很好地处理单元格数组。@yuk很好。更新。作为旁注,这仅适用于str2double()
,而不适用于str2num()
。str2double比使用string2mat的cellfun慢10-20%左右。
dVec = str2double(d);