フィルターのクリア

Vector addition with 2-dim array

1 回表示 (過去 30 日間)
Jeon
Jeon 2013 年 3 月 21 日
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 件のコメント
Jan
Jan 2013 年 3 月 21 日
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), :);

サインインしてコメントする。

採用された回答

Wouter
Wouter 2013 年 3 月 21 日
you could use this oneliner:
result = A - (ones(size(A,1),1)*v);
  1 件のコメント
Wouter
Wouter 2013 年 3 月 21 日
and if v is a column vector you need to transpose v:
result = A - (ones(size(A,1),1)*v');

サインインしてコメントする。

その他の回答 (1 件)

Jan
Jan 2013 年 3 月 21 日
A = rand(3,4);
b = rand(1,4);
C = bsxfun(@minus, A, b);

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by