Main Content

coder 型オブジェクトとプロパティの編集および表現

オブジェクトを coder.typeof に渡すか、クラス名を string スカラーとして coder.newtype に渡すと、コード生成のためのオブジェクトの型を表すオブジェクトが作成されます。

coder 型オブジェクトは、内部状態の値を除外して、オブジェクトのプロパティの簡潔な説明を表示します。非定数プロパティについては型とサイズが表示され、定数プロパティについてはその値だけが表示されます。

coder 型オブジェクトを作成するには、互換性があるオブジェクトを coder.typeof に渡します。次に例を示します。

t = categorical({'r','g','b'});
tType = coder.typeof(t)

変数 t の表現が coder 型オブジェクト tType に格納されます。

tType = 

   matlab.coder.type.CategoricalType
     1x3 categorical
	Categories : 3x1 homogeneous cell
	   Ordinal : 1x1 logical
	 Protected : 1x1 logical

オブジェクトのプロパティ

coder 型オブジェクトのプロパティを編集できます。オブジェクトのプロパティにスカラー値を割り当てることができます。coder 型オブジェクトのプロパティに値を割り当てると、対応する coder 型の値に暗黙的に変換されます。コード ジェネレーターは、coder 型オブジェクトのプロパティに割り当てられた定数を暗黙的に coder.Constant の値に変換します。オブジェクト自体のサイズを変更できます。

coder.resize を使用したオブジェクトのサイズ変更

ほとんどのオブジェクトは、coder.resize を使用してサイズ変更できます。オブジェクトやそのプロパティのサイズを変更したり、プロパティ内で配列を作成したりできます。

たとえば、timetable coder オブジェクトについて、オブジェクトのサイズを次のように変更できます。

t = timetable((1:5)',(11:15)','SampleRate',1);
tType = coder.typeof(t);
tType = coder.resize(tType, [10 2],[1 0])

このコードは、timetable:10x2 のオブジェクトにサイズ変更します。

tType = 

   matlab.coder.type.RegularTimetableType
     :10x2 timetable
	                Data : 1x2 homogeneous cell
	         Description : 1x0 char
	            UserData : 0x0 double
	      DimensionNames : {'Time'}    {'Variables'}
	       VariableNames : {'Var1'}    {'Var2'}
	VariableDescriptions : 1x2 homogeneous cell
	       VariableUnits : 1x2 homogeneous cell
	  VariableContinuity : 1x2 matlab.internal.coder.tabular.Continuity
	           StartTime : 1x1 matlab.coder.type.DurationType
	          SampleRate : 1x1 double
	            TimeStep : 1x1 matlab.coder.type.DurationType

tType の定数プロパティについては、その値が表示されます。非定数プロパティについては、その型とサイズだけが表示されます。

メモ

MATLAB® クラスを表すすべての型が coder.resize と互換性があるわけではありません。

オブジェクトのプロパティの編集によるオブジェクトのサイズ変更

プロパティ自体を編集してオブジェクトのサイズを変更できます。duration coder 型オブジェクト x について、Size プロパティを編集して必要なサイズに変更します。

x = coder.typeof(duration((1:3),0,0));
x.Size = [10 10]

このコードは、coder 型オブジェクトのサイズを変更します。

x = 

   matlab.coder.type.DurationType
     10x10 duration
	Format : 1x8 char

VarDims フラグを設定して、coder 型オブジェクトを可変サイズにすることもできます。

x.VarDims(2) = true

coder 型オブジェクトの 2 番目の次元は上限が 10 になります。

x = 

   matlab.coder.type.DurationType
     10x:10 duration
	Format : 1x8 char

coder 型オブジェクトの従来の表現

R2021a では、coder.typeof の呼び出しで coder.ClassType オブジェクトは返されなくなりました。ワークフローで coder 型オブジェクトの従来の表現が必要な場合は、クラスまたはオブジェクトの新しい表現をもつ変数で関数 getCoderType を使用します。たとえば、変数 datetime の従来の表現を取得するには、新しい表現 tt をもつ変数を使用して関数 getCoderType を呼び出します。

t = datetime;
tt = coder.typeof(t);
ttLegacy = tt.getCoderType()

コード生成の型エディターで、コード ジェネレーターは coder 型オブジェクトに対する関数 getCoderType を含めます。この関数を使用して coder 型の従来の表現を返します。コード生成の型エディターを使用した入力の型の作成と編集を参照してください。

一部の MATLAB データ型には、MATLAB コード生成用にカスタマイズされた型の表現があります。それ以外については、coder.ClassType を使用して型が表されます。

参考

| | |