如何将两个数字数组连接成一个由冒号分隔的单个字符串?

时间:2016-05-20 07:01:42

标签: string matlab vector

我的情况是:我有一个向量 A ,比如10000x1,另一个向量 B 10000x1,都是数值数组有浮点数。现在我想将数据写入一行字符串,如下所示:

A(1):B(1) A(2):B(2) ....A(10000):B(10000)

有一种有效的方法吗?现在,我只是使用for循环,首先将浮动数字更改为字符串,而不是添加':',然后将它们连接在一起。这很慢。有人可以帮忙吗?非常感谢。

2 个答案:

答案 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