Vector addition with 2-dim array

1 visualización (últimos 30 días)
Jeon
Jeon el 21 de Mzo. de 2013
A is an R by C (R x C) array and I have a rows vector V with length C. I want to add or subtract V from every rows in the array A.
Is there any way to simplify this procedure?
Of course I know some method like:
VV = V(onese(1:R), :)
result = A +/- VV;
but I just wanted an one-line command or operator, like:
result = A V
result = somefunction(A, V);
I need to find ※ or somefunction()
  1 comentario
Jan
Jan el 21 de Mzo. de 2013
ones(1:R) creates a matrix with R dimensions and prod(1:R) elements. You mean ones(1, R).
The one-line command might have the advantage, that the matrix VV is not created explicitly:
result = A - v(ones(R,1), :);

Iniciar sesión para comentar.

Respuesta aceptada

Wouter
Wouter el 21 de Mzo. de 2013
you could use this oneliner:
result = A - (ones(size(A,1),1)*v);
  1 comentario
Wouter
Wouter el 21 de Mzo. de 2013
and if v is a column vector you need to transpose v:
result = A - (ones(size(A,1),1)*v');

Iniciar sesión para comentar.

Más respuestas (1)

Jan
Jan el 21 de Mzo. de 2013
A = rand(3,4);
b = rand(1,4);
C = bsxfun(@minus, A, b);

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by