Home表記法 › (5) 演算子「*」と「.*」は何が違う?

(5) 演算子「*」と「.*」は何が違う?

この記事は最終更新から 638日 が経過しています。

行列aと行列bについて a * b と記述すると行列の積として計算される。

octave:1> a=ones(3,3)
a =
   1   1   1
   1   1   1
   1   1   1

octave:2> b=[1 2;3 4;5 6]
b =
   1   2
   3   4
   5   6

octave:3> a * b
ans =
    9   12
    9   12
    9   12

octave:4>

次に a .* b と記述すると、各要素同士の積として計算される。

octave:5> a=ones(3,3)*2
a =
   2   2   2
   2   2   2
   2   2   2

octave:6> b=[1 2 3;4 5 6;7 8 9]
b =
   1   2   3
   4   5   6
   7   8   9

octave:7> a.*b
ans =
    2    4    6
    8   10   12
   14   16   18

octave:8>

「.*」は、配列aと配列bの少なくとも一つの次元の要素数が同じであれば計算できる。(warningが出るけれども…)

octave:18> a=ones(3,3)
a =
   1   1   1
   1   1   1
   1   1   1

octave:19> b=[2 3 4]
b =
   2   3   4

octave:20> a.*b
warning: product: automatic broadcasting operation applied
ans =
   2   3   4
   2   3   4
   2   3   4

octave:21> b=[2;3;4]
b =
   2
   3
   4

octave:22> a.*b
warning: product: automatic broadcasting operation applied
ans =
   2   2   2
   3   3   3
   4   4   4

octave:23>

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>