コード生成用の MATLAB コード設計における注意事項
効率的なスタンドアロンの C/C++ コードに変換する MATLAB® コードを作成するときは、次のことを考慮しなければなりません。
データ型
C および C++ は静的なデータ型を使用します。変数の使用前にそのデータ型を判定するために、MATLAB Coder™ では各変数に対する完全な割り当てが必要です。
配列のサイズ
コード生成では可変サイズの配列と行列がサポートされています。実行時にサイズが変化するデータを表現するように、MATLAB 関数内で入力、出力、ローカル変数を定義できます。
メモリ
生成コードが静的または動的メモリ割り当てのいずれを使用するかを選択できます。
動的メモリ割り当てでは、メモリを管理するために時間を要しますが、メモリ使用量を小さくすることができます。静的メモリでは、処理速度は向上しますが、メモリ使用量は大きくなります。ほとんどの MATLAB コードは MATLAB で動的サイズ機能の利点を使用しているので、通常、動的メモリ割り当てにより、既存の MATLAB コードを大きく変更することなくそこからコードを生成できます。また、動的メモリ割り当てでは、一部のプログラムは上限を見つけることができない場合でもコンパイルを成功させることができます。
静的な割り当ては生成コードのメモリ使用量を削減できるので、組み込みアプリケーションの場合など、使用できるメモリ量に制限があるアプリケーションに適しています。
速度
組み込みアプリケーションはリアルタイムで実行しなければならないので、コードは、必要なクロック レートに十分見合うだけの高速性をもっていなければなりません。
生成コードの速度を向上するには
適切な C/C++ コンパイラを選択します。MathWorks® が Windows® 64 ビット プラットフォーム用に MATLAB に付属して提供している既定のコンパイラは使用しないでください。
実行時チェックを無効にすることを検討します。
既定の設定では、安全のために MATLAB コード用に生成されたコードには、メモリ整合性チェックと応答性チェックが含まれます。一般に、これらのチェックが含まれると、生成コードが多くなりシミュレーション速度が低下します。実行時チェックを無効にすると、通常は効率の良いコードが生成されシミュレーションの速度が上がります。これらのチェックは、配列の範囲や次元のチェックが必要ない場合にのみ無効にしてください。