ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

配列演算と行列演算

はじめに

MATLAB® には、2 種類の算術演算が用意されています。配列演算と行列演算です。これらの算術演算を使用して、2 つの数値の加算、配列要素の指定したべき乗での計算、2 つの行列の乗算などの数値計算を行うことができます。

行列演算は線形代数の規則に従って行われます。一方、配列演算は要素単位で行われ、多次元配列に対応しています。配列演算と行列演算は、ピリオド文字 (.) で区別します。ただし、加算と減算の場合の配列演算と行列演算は同じなので、.+.- の文字のペアは不要です。

配列演算

配列演算では、次元が同じ配列の対応する要素が計算されます。ベクトル、行列および多次元配列の場合、両方のオペランドが同じサイズでなければなりません。1 番目の入力の各要素は 2 番目の入力の同じ位置にある要素と対応付けられます。入力のサイズが一致しない場合、MATLAB は要素を 1 対 1 で対応させることができません。

単純な例として、同じ長さの 2 つのベクトルを加算するとします。

A = [1 1 1]
A =

     1     1     1
B = 1:3
B =

     1     2     3
A+B
ans =

     2     3     4

ベクトルのサイズが同じでない場合はエラーが発生します。

B = [1:4]
B =

     1     2     3     4
A+B
Error using  + 
Matrix dimensions must agree.

一方のオペランドがスカラーで他方がスカラーでない場合、MATLAB は他方のオペランドのすべての要素にスカラーを適用します。スカラーが他方の入力と同じサイズの配列に拡張されることから、このような特性は "スカラー拡張" と呼ばれています。その後、通常の 2 つの配列で行われるのと同じように演算が行われます。

たとえば、スカラーと行列の要素単位の積ではスカラー拡張が使用されます。

A = [1 0 2;3 1 4]
A =

     1     0     2
     3     1     4
3.*A
ans =

     3     0     6
     9     3    12

次の表に、MATLAB における配列の算術演算の概要を示します。関数固有の情報については、右端の列のリンクをクリックして関数のリファレンス ページを参照してください。

演算子

目的

説明

リファレンス ページ

+

加算

A+BAB を足します。

plus

+

単項プラス

+AA を返します。

uplus

-

減算

A-BA から B を引きます。

minus

-

単項マイナス

-AA の要素の単項マイナスを求めます。

uminus

.*

要素単位の乗算

A.*BAB の要素単位の積を求めます。

times

.^

要素単位のべき乗

A.^B は要素が A(i,j)B(i,j) 乗である行列を求めます。

power
./

配列の右除算

A./B は要素が A(i,j)/B(i,j) の行列を求めます。

rdivide

.\

配列の左除算

A.\B は要素が B(i,j)/A(i,j) の行列を求めます。

ldivide

.'

配列転置

A.'A の配列転置です。複素数行列の場合、これは複素共役転置を含みません。

transpose

行列演算

行列演算は、線形代数の規則に従って行われ、多次元配列には対応していません。項目相互の入力に必要なサイズと形状は演算によって異なります。非スカラー入力の場合、一般的に、行列演算の解は対応する配列演算とは異なるものになります。

たとえば、行列の右除算演算子 / を使用して 2 つの行列の商を求める場合、これらの行列の列数が同じでなければなりません。しかし、行列乗算演算子 * を使用して 2 つの行列の積を求める場合は、これらの行列の "内部次元" が一致していなければなりません。つまり、1 番目の入力の列数が 2 番目の入力の行数と等しくなければならないということです。行列乗算演算子では、以下の公式に従って 2 つの行列の積が求められます。

このことを確認するため、2 つの行列の積を計算してみましょう。

A = [1 3;2 4]
A =

     1     3
     2     4
B = [3 0;1 5]
B =

     3     0
     1     5
A*B
ans =

     6    15
    10    20

上記の行列の積は以下の要素単位の積とは異なるものになります。

A.*B
ans =

     3     0
     2    20

次の表に、MATLAB における行列の算術演算の概要を示します。関数固有の情報については、右端の列のリンクをクリックして関数のリファレンス ページを参照してください。

演算子

目的

説明

リファレンス ページ

*

行列乗算

C = A*B は、行列 AB の線形代数の積です。A の列数は B の行数と等しくなければなりません。

mtimes

/

行列の右除算

x = B/A は式 xA = B の解を求めます。行列 AB の列数は同じでなければなりません。左除算演算子の場合は B/A = (A'\B')' となります。

mrdivide

\

行列の左除算

x = A\B は式 Ax = B の解を求めます。行列 AB の行数は同じでなければなりません。

mldivide

^

行列のべき乗

B がスカラーの場合、A^BAB 乗です。B がそれ以外の値の場合は、固有値および固有ベクトルを含む計算となります。

mpower

'

複素共役転置

A'A の線形代数の転置です。複素数行列の場合、これは複素共役転置となります。

ctranspose

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