Filter löschen
Filter löschen

Vector addition with 2-dim array

1 Ansicht (letzte 30 Tage)
Jeon
Jeon am 21 Mär. 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 Kommentar
Jan
Jan am 21 Mär. 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), :);

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Wouter
Wouter am 21 Mär. 2013
you could use this oneliner:
result = A - (ones(size(A,1),1)*v);
  1 Kommentar
Wouter
Wouter am 21 Mär. 2013
and if v is a column vector you need to transpose v:
result = A - (ones(size(A,1),1)*v');

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jan
Jan am 21 Mär. 2013
A = rand(3,4);
b = rand(1,4);
C = bsxfun(@minus, A, b);

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by