Reputation: 1309
In MATLAB, how can I return the contents of a vector as a single integer. For example, if a = [ 1 2 3 4 5 6 7 8 9 ]
, then I want a function that returns the number 123456789
.
It's almost squeeze but removing all dimensions!!
My current solution is to read the vector as a string using sprintf
with a format of '%i'
, then convert it to a number using str2double
. That's ok if you only need to use it a few times, but fairly inefficient if it's being used 100000 times.
Upvotes: 1
Views: 73
Reputation: 221684
One approach assuming the input as a vector of one-digit numbers with str2num
and num2str
-
str2num(num2str(a,'%1d'))
Or
str2num(char(a+48)) %// Thanks to Luis!
Or
str2double(char(a+48))
Upvotes: 1
Reputation: 112759
You can use
result = a*10.^(numel(a)-1:-1:0).';
or equivalently
result = sum(a.*10.^(numel(a)-1:-1:0));
They seem to be about equally fast.
Upvotes: 3