ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

構文

  • C = dot(A,B)
  • C = dot(A,B,dim)

説明

C = dot(A,B)ABスカラーの内積を返します。

  • AB がベクトルの場合、それらは同じ長さでなければなりません。

  • AB が行列または多次元配列の場合、それらのサイズは同じでなければなりません。この場合、関数 dotAB をベクトルの集合として扱います。この関数は、サイズが 1 でない最初の配列次元に沿って対応するベクトルの内積を計算します。

C = dot(A,B,dim) は、次元 dim に沿って AB の内積を評価します。dim 入力は、正の整数のスカラーです。

すべて折りたたむ

実数ベクトルの内積

単純な 3 要素のベクトルを 2 つ作成します。

A = [4 -1 2];
B = [2 -2 -1];

AB の内積を計算します。

C = dot(A,B)
C =

     8

次のように計算されるため、結果は 8 になります。

C=A(1)*B(1)+A(2)*B(2)+A(3)*B(3)C=8+22.

複素数ベクトルの内積

2 つの複素数ベクトルを作成します。

A = [1+i 1-i -1+i -1-i];
B = [3-4i 6-2i 1+2i 4+3i];

AB の内積を計算します。

C = dot(A,B)
C =

   1.0000 - 5.0000i

AB が複素数であるため、結果は複素数スカラーになります。一般的には、2 つの複素数ベクトルの内積は複素数になります。例外は、複素数ベクトルとそれ自身の内積を取る場合です。

A とそれ自身の内積を求めます。

D = dot(A,A)
D =

     8

結果は、実数スカラーになります。ベクトルとそれ自身の内積は、ベクトルのユークリッド長 norm(A) に関係します。

行列の内積

2 つの行列を作成します。

A = [1 2 3;4 5 6;7 8 9];
B = [9 8 7;6 5 4;3 2 1];

AB の内積を求めます。

C = dot(A,B)
C =

    54    57    54

結果の C には 3 つの別々の内積が含まれます。dotAB の列をベクトルとして扱い、対応する列の内積を計算します。そのため、たとえば、C(1) = 54A(:,1)B(:,1) の内積になります。

"行" をベクトルとして扱い、AB の内積を求めます。

D = dot(A,B,2)
D =

    46
    73
    46

この場合、D(1) = 46 は、A(1,:)B(1,:) の内積になります。

多次元配列の内積

2 つの多次元配列を作成します。

A = cat(3,[1 1;1 1],[2 3;4 5],[6 7;8 9])
B = cat(3,[2 2;2 2],[10 11;12 13],[14 15; 16 17])
A(:,:,1) =

     1     1
     1     1


A(:,:,2) =

     2     3
     4     5


A(:,:,3) =

     6     7
     8     9


B(:,:,1) =

     2     2
     2     2


B(:,:,2) =

    10    11
    12    13


B(:,:,3) =

    14    15
    16    17

3 番目の次元 (dim = 3) に沿って AB の内積を計算します。

C = dot(A,B,3)
C =

   106   140
   178   220

結果の C には 4 つの別々の内積が含まれます。最初の内積 C(1,1) = 106A(1,1,:)B(1,1,:) の内積に等しくなります。

入力引数

すべて折りたたむ

A,B — 入力配列数値配列

入力配列。数値配列として指定します。

データ型: single | double
複素数のサポート: はい

dim — 動作する対象の次元正の整数スカラー

動作する対象の次元。正の整数のスカラーとして指定します。値が指定されていない場合、既定値はサイズが 1 ではない最初の配列次元です。

2 つの 2 次元の入力配列 AB について考えます。

  • dot(A,B,1)AB の列をベクトルとして扱い、対応する列の内積を返します。

  • dot(A,B,2)AB の行をベクトルとして扱い、対応する行の内積を返します。

dimndims(A) より大きい場合、dotconj(A).*B を返します。

詳細

すべて折りたたむ

スカラーの内積

長さ n の 2 つの実数ベクトルのスカラーの内積は次のようになります。

u·v=i=1nuivi=u1v1+u2v2+...+unvn.

実数ベクトルの場合、この関係は可換であり、dot(u,v)dot(v,u) は等しくなります。内積が 0 の場合、u と v は垂直になります。

複素数ベクトルの場合、内積には複素共役が含まれます。これにより、任意のベクトルとそれ自身の内積は必ず実数の正定になります。

u·v=i=1nu¯ivi.

実数ベクトルの関係とは異なり、複素数の関係は可換ではなく、dot(u,v)conj(dot(v,u)) と等しくなります。

アルゴリズム

  • 入力 A および B が実数または複素数のベクトルの場合、関数 dot はそれらを列ベクトルとして扱い、dot(A,B)sum(conj(A).*B) と同じになります。

  • 入力が行列または多次元配列の場合、dim 引数により関数 sum で演算を行う次元が決定されます。この場合、dot(A,B)sum(conj(A).*B,dim) と同じになります。

参考

| |

この情報は役に立ちましたか?