将字符串转换为数组数字

3
如何将一个字符串转换为数字数组?例如: str = '1,2,3,4.5',转换成number = [1 2 3 4.5]
我编写了下面的代码,但是它存在问题。
str='1,2,3,4.5';
tmp = regexp (str,',','split');
tmp2=[];
for(i=1:length(tmp))
tmp2(i)=cell2mat(tmp(i))
end

未来的读者应该查看以下答案:http://stackoverflow.com/questions/14895220/reading-character-by-character-from-a-string-into-an-array,以获取将字符串转换为数字数组的非常简洁的方法。 - Dan
3个回答

4

从技术上讲,@ame.b的答案是正确的。但为了多样性,您也可以在这种情况下执行以下操作,因为分隔符是,

str2num(str)

1
更好,我觉得!我只是没有想到这个,因为我自己很少使用它。 - arne.b
1
str2double 更安全,特别是因为 str2num 是基于 eval 的。我不建议使用 str2num - Nzbuu

3

我可能漏掉了某些东西,但为什么不能只使用sscanf呢? 例如:

sscanf('1,2,3,4.5','%f,')

ans =

 1.0000
 2.0000
 3.0000
 4.5000

3

str2double就是你需要的,它可以替代你使用的cell2mat

编辑:你甚至可以用cellfun来替换最后四行(即for循环和tmp2的初始化):

tmp2=cellfun(@str2double,tmp)

1
@ame.b:你不需要使用cellfun来在字符串的单元数组上运行str2double。只需使用str2double(tmp)即可。 - yuk

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