join numbers in vector

I have a row vector with 7 numbers, e.g. 13 30 44 12 44 23 12. I want to join all these numbers into a single number, or 13304412442312. I have not been able to find a method to do this. Can anyone please suggest a method to do this without using a for loop.

 Accepted Answer

kjetil87
kjetil87 on 23 Jul 2013
Edited: kjetil87 on 23 Jul 2013
x=[13 30 44 12 44 23 12];
stringX=num2str(x);
stringX=stringX(stringX~=' '); % remove the space
x2=str2num(stringX);

3 Comments

Can avoid the need to strip out spaces by using
sprintf('%d',x)
For the specific case x is 14 decimal digits and will fit into a double; add another and will need a longer mantissa or will lose precision.
>> v=[52 v]
v =
52 13 30 44 12 44 23 12 15
>> sscanf(sprintf('%d',v),'%li')==str2num(sprintf('%d',v))
ans =
0
>>
Hence my earlier suggestion to use %li and sscanf() to get a 64-bit integer.
agreed , int64 is better.
dpb
dpb on 23 Jul 2013
Gives more dynamic range than double at cost of less flexible to other operations. Of course, OP will eventually run out of range there, too, if continues to increase the size of the vector...

Sign in to comment.

More Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 23 Jul 2013
Edited: Azzi Abdelmalek on 23 Jul 2013
a=[13 30 44 12 44 23 12]
b=strrep(num2str(a),' ','')
% This is a string, if you to get a number
b=str2num(strrep(num2str(a),' ',''))
dpb
dpb on 23 Jul 2013
>> sscanf(sprintf('%d',v),'%lu')
ans =
13304412442312
>> whos ans
Name Size Bytes Class Attributes
ans 1x1 8 uint64
>> sscanf(sprintf('%d',v),'%li')
ans =
13304412442312
>> whos ans
Name Size Bytes Class Attributes
ans 1x1 8 int64
>>

Asked:

on 23 Jul 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!