行列「x」と行ベクトル「v」があります。行ベクトルの要素数は、行列の列数と同じです。次の操作を行うための定義済み関数はありますか?
for c = 1 : columns(x)
for r = 1 : rows(x)
x(r, c) -= v(c);
end
end
bsxfun(@minus,x,v)
オクターブのデモは次のとおりです。
octave> x = [1 2 3;2 3 4]
x =
1 2 3
2 3 4
octave> v = [2 0 1]
v =
2 0 1
octave>
octave> z=bsxfun(@minus,x,v)
z =
-1 2 2
0 3 3
Octave 3.6.0以降を使用している場合はbsxfun
、Octaveが自動ブロードキャストを実行するため、使用する必要はありません(これは実際に使用するのと同じbsxfun
ですが、見た目が簡単です)。例えば:
octave> x = [1 2 3; 2 3 4]
x =
1 2 3
2 3 4
octave> v = [2 0 1]
v =
2 0 1
octave> z = x - v
z =
-1 2 2
0 3 3
または、ベクトルを複製して、行列から直接減算することもできます
z = x-repmat(v, size(x, 1), 1);