How to join two numeric arrays into a single string?
Mostra commenti meno recenti
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.
Risposta accettata
Più risposte (2)
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 Commenti
Stephen23
il 20 Mag 2016
Modificato: Azzi Abdelmalek
il 20 Mag 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
il 20 Mag 2016
Categorie
Scopri di più su Characters and Strings in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!