MATLAB Answers

0

How can I merge vector elements into a single number of type double?

Asked by Lazaros Ioakeimidis on 4 Feb 2019
Latest activity Commented on by Guillaume
on 5 Feb 2019
Hello,
How can I transform this vector:
v=[1 2 3]
into this scalar of type double?:
k=123
Thank you,
Lazaros.

  0 Comments

Sign in to comment.

3 Answers

Answer by Guillaume
on 4 Feb 2019
Edited by Guillaume
on 4 Feb 2019
 Accepted Answer

k = polyval(v, 10)
is probably the easiest.
This assume of course that each element of v is an integer in the range [0-9].

  0 Comments

Sign in to comment.


Answer by Jan
on 4 Feb 2019
Edited by Jan
on 4 Feb 2019

x = [1,2,3];
d = x * 10 .^ (numel(x)-1:-1:0).' % dot product

  0 Comments

Sign in to comment.


Answer by YT
on 4 Feb 2019
Edited by YT
on 4 Feb 2019

Something like this?
A = [1 2 3];
joined = str2num(strjoin(num2cell(num2str(A(:))),''));
%>> joined = 123 (type double)
There are probably some more elegant solutions, but this is what I came up with for now.

  3 Comments

If you were going to go through strings and back, this would be simpler and faster:
str2num(char(A + '0'))
However, conversion of numbers to/from strings are slow (compared to just doing maths)
Looks much better. Thanks, learned something new today. The only downside to this is that, like you stated in your polyval solution, that this also only works correctly for positive integers.
Indeed but that is most likely the case I assume.
A simpler, yet more generic solution, using number->string->number conversion:
str2num(strjoin(compose('%d', A), ''))

Sign in to comment.