MATLAB Coder アプリでの入力としてのオブジェクトの指定
MATLAB® Coder™ アプリで、値クラス オブジェクトである入力の型を指定するには、次を行います。
値クラスを定義します。たとえば、クラス
myRectangle
を定義します。classdef myRectangle properties length; width; end methods function obj = myRectangle(l,w) if nargin > 0 obj.length = l; obj.width = w; end end function area = calcarea(obj) area = obj.length * obj.width; end end end
値クラスのオブジェクトを入力として取得する関数を定義します。次に例を示します。
function z = getarea(r) %#codegen z = calcarea(r); end
アプリで、
getarea
に対するプロジェクトを作成します。[入力の型を定義] ページで、次のいずれかの方法でオブジェクトの型を指定します。
オブジェクトの入力の型の自動定義
myRectangle
クラスのオブジェクトを作成し、それをgetarea
に渡すテスト ファイルgetarea_test
を作成します。次に例を示します。rect_obj = myRectangle(4,5); rect_area = getarea(rect_obj); disp(rect_area);
アプリの [入力の型を定義] ページで、テスト ファイル
getarea_test
を指定します。[入力の型の自動定義] をクリックします。
例の提供
値クラスのオブジェクトを指定すると、アプリでは、そのオブジェクト例のプロパティのサイズと型が使用されます。
MATLAB で、値クラス
myRectangle
のオブジェクトを定義します。rect_obj = myRectangle(4,5)
アプリの [入力の型を定義] ページで [入力またはグローバルの型を直接入力します] をクリックします。
入力パラメーター
r
の右にあるフィールドをクリックします。[例で定義] を選択します。
rect_obj
を入力するか、ワークスペース変数のリストから選択します。アプリは、オブジェクト例からプロパティおよびそのサイズと型を判断します。
または、値クラス myRectangle
の名前、またはそのクラスの coder.ClassType
オブジェクトを指定できます。coder.ClassType
オブジェクトを定義するには、coder.typeof
を使用します。次に例を示します。
MATLAB で、
rect_obj
と同じプロパティがあるcoder.ClassType
オブジェクトを定義します。t = coder.typeof(rect_obj)
アプリで、
t
を例として指定します。
プロパティのサイズまたは型を変更するには、プロパティの右側のフィールドをクリックします。
型定義とクラス定義ファイルにおける整合性
コードを生成する場合、アプリで定義するプロパティは、クラス定義ファイルのプロパティと一致しなければなりません。クラス定義ファイルにコードで使用しないプロパティがある場合、アプリの型定義にそれらのプロパティを含める必要はありません。コード ジェネレーターは、コードで使用しないプロパティを削除します。
オブジェクトをエントリポイント関数の入力として使用する場合の制限事項
オブジェクトであるエントリポイント関数の入力には次のような制限事項があります。
エントリポイント関数の入力であるオブジェクトは、値クラスのオブジェクトでなければなりません。ハンドル クラスのオブジェクトをエントリポイント関数の入力にすることはできません。そのため、ハンドル クラスを含む値クラスをエントリポイント関数の入力にすることはできません。
オブジェクトをグローバル変数にすることはできません。
オブジェクトに重複するプロパティ名がある場合は、そのオブジェクトを
coder.Constant
で使用できません。次の場合、サブクラスのオブジェクトでプロパティ名が重複します。サブクラスに、スーパークラスのプロパティと同じ名前のプロパティがある。
サブクラスが、プロパティに同じ名前を使用する複数のスーパークラスから派生している。
MATLAB で重複するプロパティ名が許可される場合の詳細については、複数のクラスからのサブクラスの作成を参照してください。