オブジェクト配列の作成
コンストラクターでの配列の作成
クラス コンストラクターは、配列を作成し出力引数として返すことにより、配列を作成できます。
たとえば、ObjectArray
クラスは入力配列と同じサイズのオブジェクト配列を作成します。そして、各オブジェクトの Value
プロパティを対応する入力配列の値に初期化します。
classdef ObjectArray properties Value end methods function obj = ObjectArray(F) if nargin ~= 0 m = size(F,1); n = size(F,2); obj(m,n) = obj; for i = 1:m for j = 1:n obj(i,j).Value = F(i,j); end end end end end end
オブジェクト配列を事前に割り当てるために、配列の最後の要素を最初に代入します。MATLAB® は、先頭から最後の 1 つ前までの配列要素を ObjectArray
オブジェクトで埋めます。
配列を事前に割り当てた後、各オブジェクトの Value
プロパティを入力配列 F
の対応する値に割り当てます。クラスを使用するには、次の手順に従います。
魔方陣の数字で 5 行 5 列の配列を作成します。
5 行 5 列のオブジェクト配列を作成します。
F = magic(5); A = ObjectArray(F); whos
Name Size Bytes Class Attributes A 5x5 304 ObjectArray F 5x5 200 double
オブジェクト配列におけるプロパティ値の参照
各オブジェクトがプロパティ PropName
をもつオブジェクト配列 objArray
を考えてみます。
配列インデックス付けを使用して特定のオブジェクトのプロパティ値を参照します。
objArray(ix).PropName
ドット表記を使用してオブジェクト配列内の同じプロパティのすべての値を参照します。MATLAB からプロパティ値のコンマ区切りリストが返されます。
objArray.PropName
コンマ区切りリストを変数に代入するには、式の右辺を大かっこで囲みます。
values = [objArray.PropName]
たとえば、次の ObjProp
クラスを考えてみます。
classdef ObjProp properties RegProp end methods function obj = ObjProp obj.RegProp = randi(100); end end end
ObjProp
オブジェクトの配列を作成します。
for k = 1:5 objArray(k) = ObjProp; end
配列インデックス付けを使用して、オブジェクト配列の 2 番目の要素の RegProp
プロパティにアクセスします。
objArray(2).RegProp
ans = 91
すべての RegProp
プロパティの値を数値配列に代入します。
propValues = [objArray.RegProp]
propValues = 82 91 13 92 64
標準的なインデックス操作を使用して数値配列の値にアクセスします。数値配列の詳細については、行列および配列を参照してください。