How can I add two vectors of same length or different length using for-loops?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sunil Kunjachan
el 7 de Mzo. de 2017
Respondida: Sunil Kunjachan
el 7 de Mzo. de 2017
for example: x=[9 9 9 9];y=[9 9 9 9] The result should be as z=[1 9 9 9 8]. How can I write a code using for-loops or any other means. Greatly appreciate help
2 comentarios
KSSV
el 7 de Mzo. de 2017
How x = [9 9 9 9], y = [9 9 9 9] becomes z = [1 9 9 9 8]? What is the logic?
Respuesta aceptada
Jan
el 7 de Mzo. de 2017
Editada: Jan
el 7 de Mzo. de 2017
Using the string conversion is efficient as long as the input does not have more than 16 digits. For longer vectors the limited precision of double will crop the least significant digits. For an arbitrary number of digits:
function c = DigitsAdd(a, b)
% Author: Jan Simon, License: Creative Commons Attribution Share Alike 3.0
isrow = size(a, 2) > 1;
na = numel(a);
nb = numel(b);
a = [zeros(max(1, nb - na + 1), 1); a(:)]; % Pad with at least one zero
b = [zeros(max(1, na - nb + 1), 1); b(:)];
c = a + b; % Standard addition
carry = 0; % Shift the values above 10
for k = numel(c):-1:1
cc = c(k) + carry;
c(k) = rem(cc, 10);
carry = (cc - c(k)) / 10; % Must be integer
end
if c(1) == 0 % Crop leading zero
c = c(2:numel(c));
% If wanted crop all leading zeros:
% c = c(find(c, 1):numel(c));
end
if isrow % Reply a row vector if input "a" was one
c = c.';
end
0 comentarios
Más respuestas (1)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!