How to join two numeric arrays into a single string?
Show older comments
Hi guys, I have a situation that: I have one vector A, say 10000x1, and another vector B 10000x1, both are numerical arrays with floating point numbers in it. Now I want to write the data into one line of string as below:
A(1):B(1) A(2):B(2) ....A(10000):B(10000)
Is there an efficient way to do this? Right now, i am just using a for loop, change the floating number to string first, than add the ':', and then concatenate them together. This is very slow. Could anybody help? Thanks a lot.
Accepted Answer
More Answers (2)
goerk
on 20 May 2016
I don't know if its faster but you can try
str = [sprintf('%f:',A) sprintf('%f:',B)];
str(end) = [];
The correct solution is to first concatenate the matrices (and because you have column matrices you also need to transpose):
>> A = [0;1;2;3;4];
>> B = [5;6;7;8;9];
>> sprintf('%d:%d ',[A,B].')
ans = 0:5 1:6 2:7 3:8 4:9
Note that evaluating this string to generate a numeric vector will be very inefficient:
and a much better solution is to use arrayfun:
>> C = arrayfun(@(a,b)a:b,A,B,'Uni',false);
>> [C{:}]
ans =
0 1 2 3 4 5 1 2 3 4 5 6 2 3 4 5 6 7 3 4 5 6 7 8 4 5 6 7 8 9
3 Comments
Stephen23
on 20 May 2016
Edited: Azzi Abdelmalek
on 20 May 2016
>> A = (1:10).';
>> B = randn(10,1);
>> sprintf('%d:%f ',[A,B].')
ans = 1:-0.356415 2:0.039756 3:-2.294004 4:0.555082 5:-1.860219 6:1.430920 7:-0.423892 8:-1.010463 9:0.515073 10:-0.2211
28
And read the fprintf documentation for more information on defining the format string.
Yi Zhu
on 20 May 2016
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!