Main Content

MATLAB コード生成における System object

MATLAB® Coder™ を使用して、System object を含むシステムから MATLAB で C/C++ コードを生成できます。デスクトップおよび組み込みシステムに展開するための効率的でコンパクトなコードを生成して、固定小数点アルゴリズムを高速化することができます。

コードの生成に関する System object の使用条件と制限

次の使用条件と制限は、MATLAB で生成されたコードで System object を使用するために適用されます。

オブジェクトの作成と初期化

  • オブジェクトが永続変数に格納されている場合は、isempty() の呼び出しを含む if ステートメントにオブジェクト ハンドルを組み込むことで、System object を 1 回初期化します。

  • 引数をコンパイル時の定数として System object™ コンストラクターに設定します。

  • releaseImpl が使用するすべての System object プロパティを setupImpl の最後に到達する前に初期化します。

  • コード生成では System object のプロパティを他の MATLAB クラス オブジェクトを既定値として初期化することはできません。これらのプロパティはコンストラクターで初期化しなければなりません。

入力と出力

  • System object の最大入力数は 1024 です。入力ごとに最大 8 次元がサポートされています。

  • 入力のデータ型は変更できません。

  • 入力の実数/複素数は変更できません。

  • 入力のサイズを変更する必要がある場合は、可変サイズに対するサポートが有効になっていることを確認します。コード生成で可変サイズ データをサポートするには、可変サイズ サポートが有効になっている必要もあります。MATLAB では、可変サイズ データに対するサポートが既定で有効になっています。

  • データの値が DynamicMemoryAllocationThreshold の値を上回る場合、ソフトウェアで事前に定義されている System object は可変サイズをサポートしません。

  • System object が MATLAB Function ブロックの出力になるようには設定しないでください。

  • MATLAB Function ブロックの System object に対してはシミュレーションの操作点の保存と復元のオプションを使用しないでください。

  • codegen (MATLAB Coder) によってコンパイルされる関数には、System object をサンプル入力引数として渡さないでください。

  • System object は、関数 coder.extrinsic を使用して外部関数 (インタープリター モードで呼び出される関数) として宣言された関数には渡さないでください。外部関数および自動的に外部になる範囲 System object から返される System object は、別の外部関数に対する入力として使用できます。ただし、これらの関数はコードを生成しません。

プロパティ

  • MATLAB System ブロックでは、System object の離散状態プロパティに対して可変サイズを使用できません。プライベート プロパティは可変サイズにできます。

  • プロパティの既定値としてオブジェクトを使用することはできません。

  • 調整不可能なプロパティに値を割り当てることができるのは 1 回のみです (コンストラクターでの割り当てを含む)。

  • 調整不可能なプロパティ値は定数でなければなりません。

  • 固定小数点入力に、調整可能なプロパティに依存データ型プロパティがある場合、構築時またはオブジェクトがロックされた後にのみ調整可能なプロパティを設定できます。

  • getNumInputsImpl メソッドおよび getNumOutputsImpl メソッドでは、オブジェクト プロパティからの戻り引数を設定する場合、そのオブジェクト プロパティに Nontunable 属性がなければなりません。

グローバル変数

メソッド

codegen での System object

System object は、他の要素を含めるのと同様に、MATLAB コードに含めることができます。その後、MATLAB Coder ライセンスがある場合に使用できる codegen (MATLAB Coder) コマンドを使用して、MATLAB コードから MEX ファイルをコンパイルできます。いくつかの最適化を伴うこのコンパイル プロセスは、シミュレーションの高速化に役立ちます。詳細については、MATLAB Coder 入門 (MATLAB Coder)およびMATLAB のクラス (MATLAB Coder)を参照してください。

メモ

すべてではありませんが、ほとんどの System object ではコードの生成がサポートされています。詳細は、特定のオブジェクトのリファレンス ページを参照してください。

MATLAB Function ブロックでの System object

MATLAB Function ブロックを使用すると、任意の System object と任意の MATLAB 言語の関数を Simulink モデルに含めることができます。その後、このモデルは組み込み可能なコードを生成できます。System object は、コード生成のために、ほとんどの関連ブロックよりも高いレベルのアルゴリズムを提供します。詳細については、Simulink での MATLAB Function ブロックを使用した MATLAB 関数の実装を参照してください。

MATLAB System ブロックでの System object

MATLAB System ブロックを使用すると、Simulink モデルに、クラス定義ファイルで作成した個々の System object を含めることができます。その後、このモデルは組み込み可能なコードを生成できます。詳細については、MATLAB System ブロックを参照してください。

System object と MATLAB Compiler ソフトウェア

MATLAB Compiler™ ソフトウェアでは、MATLAB 関数内での System object の使用をサポートしています。コンパイラ製品では、MATLAB スクリプトでの System object の使用はサポートされていません。

関連するトピック