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

 Respuesta aceptada

Guillaume
Guillaume el 4 de Feb. de 2019
Editada: Guillaume el 4 de Feb. de 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].

Más respuestas (2)

Jan
Jan el 4 de Feb. de 2019
Editada: Jan el 4 de Feb. de 2019
x = [1,2,3];
d = x * 10 .^ (numel(x)-1:-1:0).' % dot product
YT
YT el 4 de Feb. de 2019
Editada: YT el 4 de Feb. de 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 comentarios

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)
YT
YT el 4 de Feb. de 2019
Editada: YT el 4 de Feb. de 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.
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), ''))

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 4 de Feb. de 2019

Comentada:

el 5 de Feb. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by