要转换特征向量的电池阵列数字,你可以使用
str2double
功能。此功能是最简单的方法。
C = {“0.000000”;'10 0.000000';“100000.000000”};
M = str2double (C)
的
cell2mat
函数将包含字符向量的单元格数组转换为字符数组,且仅当所有字符向量具有相同长度时。
cell2mat
还保留的单元格的内容的数据类型,因此它不字符转换为数字。
如果您需要的代码要快,然后使用下面的代码来代替。这个代码比快
str2double
:
C = {“0.000000”;'1.000000';“2.000000”;...
“3.000000”;'4.000000';“5.000000”;'6.000000'
'7.000000';“8.000000”;'9.000000';'10 0.000000'};
S = sprintf ('%S *', C{:});
N = sscanf的(S,' % f *’);
S = CStr2String (C,'*');
N = sscanf的(S,' % f *’);
计时在2011B,酷睿2:
N = 100;
C = cell(1, n);
为IC = 1:N;13 C {I} =的sprintf('%F', 一世);结束
抽搐;为我= 1:1000;N = cellfun(@(X)str2double(X),C);结束;toc
> > 3.61秒
抽搐;为我= 1:1000;N = cellfun(@ x) sscanf(x,'%F'), C);结束;toc
>> 3.01秒
抽搐;为我= 1:1000;N = str2double (C);结束;toc
>> 2.79秒
抽搐;为我= 1:1000;N = cellfun(@str2double, C);结束;toc
> > 2.49秒
抽搐;为我= 1:1000;
N =零(1100);为j = 1:10 0;N (j) = sscanf (C {j},'%F');结束;
结束;toc
>> 1.40秒
抽搐;为我= 1:1000;N = sscanf (sprintf ('%S *', C {:}),' % f *’);结束;toc
>> 0.14秒
抽搐;为我= 1:1000;N = sscanf的(CStr2String(C,'*'),' % f *’);结束;toc
> > 0.071秒
令我惊讶的是,它在C语言中有一个完整的实现
慢
比
的sscanf(sprintf的())
,请参阅
字符串到双倍
.Matlab的sscanf似乎比MSVC实现要好得多。