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

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

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

空行列、スカラー、ベクトル

概要

行列は 2 次元ですが、必ずしも矩形として表示されるとは限りません。たとえば、1 行 8 列の行列の場合、2 次元ですが線状になっています。このような行列については、以下の節で説明します。

  • 空行列

    "空行列" には、0 に等しい 1 つまたは複数の次元が含まれています。両方の次元が 0 に等しい 2 次元の行列は、MATLAB® では [] として表されます。A = [] の式は、0 行 0 列の空行列を A に代入します。

  • スカラー

    スカラー は 1 行 1 列で、MATLAB では 1 つの実数または複素数 (たとえば 7583.62-3.515.46097e-1483+4i など) として表されます。

  • ベクトル

    ベクトルは 1 行 n 列または n 行 1 列で、MATLAB では実数または複素数の行または列として表されます。

         Column Vector                 Row Vector
    
             53.2                  53.2 87.39 4-12i 43.9
             87.39
             4-12i
             43.9
    

空行列

1 つ以上の次元がゼロである行列を、空行列と呼びます。最も簡単な空行列は、0 行 0 列のサイズになります。より複雑な行列の例としては、0 行 5 列、または 10 行 0 列の次元があります。

間に何の値も指定せずに大かっこ [] のみを記述することで、0 行 0 列の行列を定義することができます。

A = [];

whos A
  Name      Size         Bytes  Class

  A         0x0              0  double array

それ以外のサイズの空配列は、関数 zerosonesrandeye などを使って作成できます。たとえば、0 行 5 列の行列を作成するには、次のようにします。

A = zeros(0,5)

空行列の演算

空行列に関する基本的なモデルは、mn 列の行列に対し設定される任意の演算で、mn が結果の次元で、m または n のどちらかがゼロでも可能です。この演算の結果として生じるサイズは、空以外の値で生成される値のサイズと一致しますが、ゼロで評価されます。

たとえば、水平方向への連結

C = [A B]

では、AB の行数が等しい必要があります。したがって、Amn 列で、Bmp 列の場合、Cm--(n+p) 列です。そして mnp のいずれかがゼロでも true となって成り立ちます。

MATLAB で行列を扱う場合、次元の整合性に関するルールが成り立たなければなりません。次の例で、1 行 3 列の行列に、0 行 3 列の空行列を付加しようとするとエラーになります。

[1 2 3] + ones(0,3) + の使用中にエラーが発生しました。行列の次元は一致しなければなりません。

一般の演算-  以下の演算は空配列に 0 を返します。

A = [];
size(A), length(A), numel(A), any(A), sum(A)

以下の演算は、空配列に非ゼロ値を返します。

A = [];
ndims(A), isnumeric(A), isreal(A), isfloat(A), isempty(A), ...
   all(A), prod(A)

比較演算における空行列の使用

比較する両方のオペランドが同じ次元である場合や、空でないオペランドがスカラーである場合は、"等しい" (==) や "大なり" (>) などの関係演算子に空行列を使用できます。空行列を含む、任意の比較演算の結果は、空行列です。空行列を空行列と比較しても、関数 true を返しませんが、その代わりに空の行列を生成します。

x = ones(0,3);
y = x;

y == x
ans =
   Empty matrix: 0-by-3

論理演算における空行列の使用

MATLAB には、2 つの異なるタイプの論理演算子があります。

  • ショートサーキット (&&||) - 複数の論理条件の判定 (たとえば、x >= 50 && x < 100) に使用されます。ここで、各条件は、スカラー true または false に評価します。

  • 要素単位 (&|) - 行列または配列の各要素に論理 AND、OR、NOT を実行します。

ショートサーキット演算-  ショートサーキット演算で使用される各オペランドは、論理スカラー値に変換可能でなければならないルールがあります。このルールのために、空の行列は、ショートサーキット論理演算で使用できません。このような演算は、エラーになります。

唯一の例外は、MATLAB が、式全体を評価する必要がなく、論理ステートメントの結果を決定できる場合です。次の 2つのステートメントがその例です。なぜなら、ステートメント全体の結果は、最初の項のみで判断できるからです。

true || []
ans =
   1

false && []
ans =
   0

要素単位演算-  ショートサーキット演算子と異なり、空の行列へのすべての要素単位の演算は、オペランドの次元が一致するか、または空でないオペランドがスカラーである場合に限り、実行されます。空の行列への要素単位の演算は、常に、空の行列を返します。

true | []
ans =
   []

    メモ   この動作は、MATLABが二項演算子においてスカラー拡張を行う方法と一致します。スカラーでないオペランドは、結果のサイズを決定します。

スカラー

各実数または複素数は、MATLAB ではスカラー値と呼ばれる 1 行 1 列の行列で表現されます。

A = 5;

ndims(A)        % Check number of dimensions in A
ans =
     2

size(A)         % Check value of row and column dimensions
ans =
     1     1

関数 isscalar を使って、変数にスカラー値が含まれているかどうかを識別します。

isscalar(A)
ans =
    1

ベクトル

1 つの次元の行列は 1 に等しく、複数次元の行列はベクトルと呼ばれます。数値ベクトルの例を次に示します。

A = [5.73 2-4i 9/7 25e3 .046 sqrt(32) 8j];

size(A)         % Check value of row and column dimensions
ans =
     1     7

主要な次元が一致していれば、他のベクトルからベクトルを作成することができます。行ベクトルのすべての成分は、スカラーまたは他の行ベクトルでなければなりません。同様に、列ベクトルの全成分はスカラー、または他の列ベクトルでなければなりません。

A = [29 43 77 9 21];
B = [0 46 11];

C = [A 5 ones(1,3) B]
C =
   29   43   77    9   21    5    1    1    1    0   46   11

空行列をベクトルに連結すると、結果として生じるベクトルに影響が生じます。この場合、空行列は無視されます。

A = [5.36; 7.01; []; 9.44]
A =
    5.3600
    7.0100
    9.4400

関数 isvector を使って、変数にベクトルが含まれていることを伝えます。

isvector(A)
ans =
    1
この情報は役に立ちましたか?