concatenate all value in a matrix into one number

1 visualizzazione (ultimi 30 giorni)
if I have a matrix [1 2 3 4], is there a quick and easy way to obtain 1234 ?

Risposta accettata

Thorsten
Thorsten il 17 Ott 2016
This works even if the numbers are not single digits, i.e., in in {1,2,...,9}
v = [10 20 4];
num = sscanf(sprintf('%d', v), '%f')
  1 Commento
Guillaume
Guillaume il 17 Ott 2016
Indeed, however if they are single digits (as I assumed), conversion to string and back to number is going to be several order of magnitude slower than simple mathematical manipulation.
Not that it matters for such trivial code.

Accedi per commentare.

Più risposte (1)

Guillaume
Guillaume il 17 Ott 2016
v = [1 2 3 4];
assert(all(v >= 0 & v < 10 & mod(v, 1) == 0), 'elements of v are not single digits');
sum(10.^(numel(v)-1:-1:0) .* v)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by