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

13 次查看(过去 30 天)
Hello,
How can I transform this vector:
v=[1 2 3]
into this scalar of type double?:
k=123
Thank you,
Lazaros.

采纳的回答

Guillaume
Guillaume 2019-2-4
编辑:Guillaume 2019-2-4
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].

更多回答(2 个)

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

YT
YT 2019-2-4
编辑:YT 2019-2-4
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 个评论
YT
YT 2019-2-4
编辑:YT 2019-2-4
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 2019-2-5
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), ''))

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by