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

2 Ansichten (letzte 30 Tage)
Hello,
How can I transform this vector:
v=[1 2 3]
into this scalar of type double?:
k=123
Thank you,
Lazaros.

Akzeptierte Antwort

Guillaume
Guillaume am 4 Feb. 2019
Bearbeitet: Guillaume am 4 Feb. 2019
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].

Weitere Antworten (2)

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

YT
YT am 4 Feb. 2019
Bearbeitet: YT am 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 Kommentare
YT
YT am 4 Feb. 2019
Bearbeitet: YT am 4 Feb. 2019
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.
Guillaume
Guillaume am 5 Feb. 2019
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), ''))

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by