Mark
Mark

Reputation: 1309

Return vector elements as a single integer

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

Answers (2)

Divakar
Divakar

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

Luis Mendo
Luis Mendo

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

Related Questions