How to combine multiple numbers into 1 number?
18 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have the numbers R1, R2, Zr1, that I want to fuse together into 24000 . Zr1 is an array, while R1 and R2 are double. I have tried strcat but it only produces 240 0 0 which is not the intended 24000
R1 = 2
R2 = 4
Zr1 = 0 0 0
1 Commento
Stephen23
il 25 Feb 2023
"Zr1 is an array, while R1 and R2 are double"
All doubles are arrays. Scalars are not a separate type, because in MATLAB everything is an array:
Risposta accettata
Stephen23
il 25 Feb 2023
Modificato: Stephen23
il 25 Feb 2023
General solution:
R1 = 2;
R2 = 4;
Zr1 = [0,0,0];
V = [R1,R2,Zr1];
N = 10.^(numel(V)-1:-1:0) * V(:)
4 Commenti
Stephen23
il 25 Feb 2023
"can you explain how N = 10.^(numel(V)-1:-1:0) * V(:) works?"
Break code down to know how it works. You can do this yourself.
R1 = 2;
R2 = 4;
Zr1 = [0,0,0];
V = [R1,R2,Zr1] % so V is a 1x5 vector: [10000's,1000's,100's,10's,1's]
Clearly all we need to do is to multiply the elements of V by the corresponding power of ten, and then add them together. Note that [10000,1000,100,10,1] is just [1e4,1e3,1e2,1e1,1e0] which is just 10.^[4,3,2,1,0]. So that is very easy to generate:
P = numel(V)-1:-1:0
Q = 10.^P
Then one simple matrix multiplication does both the multiplying and the addition:
Q * V(:)
Steven Lord
il 25 Feb 2023
Another way to generate the Q vector is with logspace.
Q = logspace(4, 0, 5)
Più risposte (1)
Alan Stevens
il 25 Feb 2023
Modificato: Alan Stevens
il 25 Feb 2023
Do you mean
R1 = 2; R2 = 4; Zr1 = [0 0 0];
R = R1*10^4+R2*10^3+Zr1(1)*10^2+Zr1(2)*10+Zr1(3)
Alternatively:
R1 = 2; R2 = 4; Zr1 = [0 0 0];
R = [R1, R2, Zr1]
M = 10.^[4 3 2 1 0]
R = M*R'
0 Commenti
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!