我的情况是:我有一个向量 A ,比如10000x1
,另一个向量 B 10000x1
,都是数值数组有浮点数。现在我想将数据写入一行字符串,如下所示:
A(1):B(1) A(2):B(2) ....A(10000):B(10000)
有一种有效的方法吗?现在,我只是使用for循环,首先将浮动数字更改为字符串,而不是添加':',然后将它们连接在一起。这很慢。有人可以帮忙吗?非常感谢。
答案 0 :(得分:1)
这应该相对较快。如果有人提供了替代实现,我提供了一个tic-toc来提供参考执行时间。
tic
a=rand(10000,1);
b=rand(10000,1);
c=zeros(20000,1);
c(1:2:end)=a;
c(2:2:end)=b;
c_string=mat2str(c);
idx=find(c_string==';');
c_string(idx(1:2:end))=':';
c_string(idx(2:2:end))=' ';
toc
%Elapsed time is 0.365694 seconds.
答案 1 :(得分:1)
对于维nx1
(列矩阵)
tic
A=rand(10000,1);
B=rand(10000,1);
finalString=sprintf(' %f:%f',[A.'; B.']);
finalString(1)=[];
toc
经过的时间是0.036697秒。
对于维1xn
(行矩阵)
tic
A=rand(1,10000);
B=rand(1,10000);
finalString=sprintf(' %f:%f',[A; B]);
finalString(1)=[];
toc
经过的时间是0.036879秒。
值类型
%f - >浮点数(定点表示法)
%d - >整数,签名(Base 10)
对于更多值类型,http://in.mathworks.com/help/matlab/ref/sprintf.html有一个转换字符表,可以将数字和字符数据格式化为文本,或者您可以在matlab帮助中搜索sprintf
。