Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

empty

指定されたクラスの空の配列を作成

説明

このページでは、特定のクラスの空の配列を作成する empty メソッドについて説明します。既存の配列が空の配列かどうかをテストするには、isempty を使用します。

A = ClassName.empty は、指定されたクラスの 0 行 0 列の空の配列を返します。ClassName を実際のクラス名に置き換えます。空の配列の動作の詳細については、MATLAB での空の配列を参照してください。

A = ClassName.empty(sz1,...,szN) は、指定した次元をもつ空の配列を返します。次元の少なくとも 1 つが 0 でなければなりません。

A = ClassName.empty(sizeVector) は、指定した次元をもつ空の配列を返します。次元の少なくとも 1 つが 0 でなければなりません。

すべて折りたたむ

empty メソッドを uint8 に対してサイズを指定せずに呼び出します。

A = uint8.empty
A =

  0x0 empty uint8 matrix

空の配列に値を代入すると、空でない配列に拡張されます。空の配列に代入する値は、配列と同じクラスであるか、そのクラスに変換可能でなければなりません。MATLAB は、配列の他の要素に配列型の既定値を代入します。uint8 の場合は 0 になります。

A(3,3) = 5
A = 3x3 uint8 matrix

   0   0   0
   0   0   0
   0   0   5

空でない配列の初期化

空でない配列を初期化するには、zerosones などの関数を使用して配列を初期値で埋めます。MATLAB には null 値がないため、空でない配列ではすべての要素に値が必要です。たとえば、empty を使用して 3 行 3 列の配列を作成することはできません。これは、少なくとも 1 つの次元は長さが 0 でなければならないためです。

MATLAB では、少なくとも 1 つの次元が 0 であれば、非ゼロ サイズの次元をもつ空の配列を作成できます。こうした空の配列 (0 行 5 列の配列など) は、多くの反復アルゴリズムで自然に発生する可能性があり、0 行 0 列の空の配列と同じルールに従います。この配列はクラスをもちますが、要素は含まれません。

コードをドキュメント化する方法として、非ゼロの次元サイズをもつ空の配列を作成できます。たとえば、0 行 5 列の次元をもつ空の int16 配列を作成します。

A = int16.empty(0,5)
A =

  0x5 empty int16 matrix

A を、1 行 5 列のベクトルを垂直方向に連結して作る 6 行 5 列の整数行列の初期値として使用します。

for i = 1:6
    A = [A; randi(9,[1 5],"int16")];
end
A
A = 6x5 int16 matrix

   8   9   2   9   6
   1   3   5   9   9
   2   9   9   5   8
   2   4   9   8   9
   6   1   8   9   7
   7   7   4   6   2

ベクトルを使用して空の配列の次元を定義します。

V = [0 0 6];
Bdouble = double.empty(V)
Bdouble =

  0x0x6 empty double array

入力引数

すべて折りたたむ

配列の次元。整数として指定します。少なくとも 1 つの次元が 0 でなければなりません。負の値は 0 として扱われます。後続の 1 の次元は配列のサイズに含まれません。

次元のベクトル。整数の行ベクトルとして指定します。少なくとも 1 つの要素が 0 でなければなりません。負の値は 0 として扱われます。後続の 1 の次元は配列のサイズに含まれません。

出力引数

すべて折りたたむ

空の配列。指定されたクラスおよび次元の空の配列として返されます。

詳細

すべて折りたたむ

MATLAB での空の配列

MATLAB® では、"空の配列" とは、サイズが 0 の次元を少なくとも 1 つもつ配列のことです。空の配列には要素がありません。

empty メソッドを使用すると、特定のクラスの配列を初期化できます。空の配列に特定の値を代入すると、空の配列を空でない配列に拡張できます。配列に代入するオブジェクトは、空の配列のクラスと同じクラスか、変換可能なクラスでなければなりません。たとえば、uint8 の空の配列を作成し、そこに string 値を代入します。

A = uint8.empty;
A(3,3) = "word"
Unable to perform assignment because value of type 'string' is 
not convertible to 'uint8'.

メモ

空の配列はサイズが 0 の次元を少なくとも 1 つもつ必要があるため、empty を使用して 3 行 3 列などの配列を作成することはできません。MATLAB には null 値がないため、空でない配列ではすべての要素に値を代入する必要があります。空でない数値配列をすばやく初期化するには、zerosonesのような関数の使用を検討してください。

ユーザー定義クラスの空の配列

ユーザー定義クラスの空の配列を初期化できます。たとえば、empty 静的メソッドは、次で定義される ColorInRGB クラスの隠されたメソッドです。

classdef ColorInRGB
   properties
      Color (1,3) = [1,0,0];
   end
   methods
      function obj = ColorInRGB(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end

empty メソッドを呼び出します。

A = ColorInRGB.empty;

この空の配列に値を代入することで、空でない配列に拡張することができます。MATLAB が配列にオブジェクトを埋める方法の詳細については、オブジェクト配列の作成と初期化を参照してください。

空の配列の識別

関数 isemptysize、および length を使用すると、空のオブジェクト配列を識別できます。たとえば、前節で定義した ColorInRGB クラスの空の配列を作成します。

A = ColorInRGB.empty(0,5);
isempty(A)
ans =

  logical

   1
size(A)
ans =

     0     5
length(A)
ans =

     0

空の配列の連結

空の配列は、配列の連結挙動に従います。たとえば、double の空の配列を作成し、それを連結して 2 番目の配列を作成します。

A = double.empty(0,5);
B = [A A]
B = 

  0×10 empty double matrix

ヒント

  • empty は、すべての非抽象 MATLAB クラスの隠されたパブリックの静的メソッドです。クラス定義内で empty メソッドをオーバーライドできます。

  • このメソッドは、double 配列の [] など、空の配列を作成するための特殊な構文をもたないデータ型の空の配列を作成する場合に便利です。

バージョン履歴

R2008a で導入