Matlab - MATLAB - Sumar un vector X con otro vector Y elemento por elemento sin usar For/end

   
Vista:
Imágen de perfil de Jorge

MATLAB - Sumar un vector X con otro vector Y elemento por elemento sin usar For/end

Publicado por Jorge (3 intervenciones) el 10/07/2015 17:30:27
Estimados amigos

Quisiera saber si alguien conoce algún comando o sentencia que permita sumar un vector con otro pero elemento por elemento para formar una Matriz. Se que con el .* puedo realizar la multiplicación pero .+ no me permite esto. Exite alguna opción que no sea usando ciclos (for)

Por ejemplo

X= [1 2 3];
Y=[4 5 6];

Z= X.+Y
Z = [(1+4) (1+5) (1+6)
(2+4) (2+5) (2+6)
(3+4) (3+5) (3+6)]

Z = [5 6 7
6 7 8
7 8 9]

Z es una matriz formada por la suma de cada elemento de X con cada elemento de Y

agradezco si me puede ayudar con esto. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel

MATLAB - Sumar un vector X con otro vector Y elemento por elemento sin usar For/end

Publicado por Daniel (212 intervenciones) el 10/07/2015 17:58:19
Podes hacerlo así:

1
2
[mx my]=meshgrid([1 2 3],[4 5 6]);
mx+my


Comentanos si te sirvió

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge

MATLAB - Sumar un vector X con otro vector Y elemento por elemento sin usar For/end

Publicado por Jorge (3 intervenciones) el 10/07/2015 18:04:45
Muchisimas gracias por tu respuesta. Me ha gustado la alternativa pero quisiera saber si existe alguna otra forma que no almacene la matriz.

Pregunto porque la idea es hacer un código lo más optimo y veloz posible.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Daniel

MATLAB - Sumar un vector X con otro vector Y elemento por elemento sin usar For/end

Publicado por Daniel (212 intervenciones) el 10/07/2015 18:13:30
ok a ver si esto anda mejor:


1
ones(3,1)*[1 2 3]+[4 5 6]'*ones(1,3)


podes definir una function sumavec

1
2
3
4
function s=sumavec(v1,v2)
 
n=size(v1,3);
s=ones(n,1)*v1+v2'*ones(1,n);


Comentanos si te sirvió

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge

MATLAB - Sumar un vector X con otro vector Y elemento por elemento sin usar For/end

Publicado por Jorge (3 intervenciones) el 10/07/2015 18:16:50
Esta esta super genial mejor aun. Mira esta y dime que opinas:

Cual crees tu que es más optima y rapida en tiempo de computo para grandes cantidades de información:

X = [1 2 3];
Y = [4 5 6];
Z = reshape( bsxfun(@plus, X, Y'), 1, []);

me la dieron en el blog the matlab oficial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar