このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
コード生成用の MATLAB コードの準備
C/C++ コードを生成するために、コード ジェネレーターは、動的に型指定された MATLAB® コードを静的に型指定された C/C++ に変換します。動的に型指定された MATLAB の変数のプロパティは実行時に変更できます。同じ変数を使って任意のクラス、サイズ、実数/複素数の値を格納できます。C/C++ などの静的に型指定される言語では、コンパイル時に変数の型を決定する必要があります。
コードを生成する前に、コード生成の対象とする関数を特定します。この関数は、"エントリポイント" 関数または "基本" 関数と呼ばれます。コード生成用にコードを準備するには、次のようにします。
コード生成用に変数を初期化します。
コードでサポートされない関数および言語機能をスクリーニングします。
コード生成用の変数の初期化
生成コードは静的に型指定されるため、使用前にコード内のすべての変数を初期化して、コード ジェネレーターが生成コードで変数を特定して適切に割り当てることができるようにします。これらの問題の一部を特定するには、コードに次の行を含めます。
%#codegen
元のコード | 問題 | 変更されたコード |
---|---|---|
y = zeros(1,10); y(3) = 1 + 2i; | y は double として定義されていますが、double 型の複素数値が代入されます。 | y = complex(zeros(1,10)); y(3) = 1 + 2i; |
for i = 1:N y(i,i) = i; end | 配列 y は定義されずに動的に拡張されます。 | y = zeros(N,N); for i = 1:N y(i,i) = i; end |
特定のデータ型に関するコード生成用のデータ定義の詳細については、コード生成のためのデータの定義に関する考慮事項およびC/C++ コード生成のための変数定義のベスト プラクティスを参照してください。
コードでのサポートされない関数および言語機能のスクリーニング
コード ジェネレーターではほとんどの言語機能と関数がサポートされています。コードにサポートされない関数および言語機能があるかを確認するには、次のようにします。
[アプリ] タブから MATLAB Coder™ アプリを起動します。あるいは、コマンド ラインで次のように入力します。
>> coder
アプリにエントリポイント関数名を入力します。この手順ではサブ関数を追加しないでください。コード ジェネレーターによって必要なすべてのサブ関数が自動的に含められます。
コード生成の準備状態ツール レポートを取得するには、[次へ] をクリックします。コードにサポートされない関数または言語機能がある場合は、ここで報告されます。
あるいは、エントリポイント関数に対してスクリーナーを呼び出します。コマンド ラインで、次のコマンドを実行します。
coder.screener('filename');
このツールはコードを解析し、サポートされない MATLAB 関数および一部のサポートされない言語機能を強調表示します。C/C++ コードの生成でサポートされている関数およびオブジェクトおよび coder.screener
を参照してください。
コードにサポートされない関数が含まれている場合は、次の回避方法を検討してください。
コード生成をサポートする代替の関数と System object があるかを確認します。
これらの関数のカスタム コードを記述します。
coder.ceval
を使用して、その関数に対応するカスタム C 関数を呼び出します。coder.extrinsic
を使用して関数を呼び出します。
ヒント
コマンド ラインでの詳細なコード生成オプションの設定
関数 codegen
を使用して構成オブジェクト coder.config
を指定します。ビルドのタイプに応じて、coder.CodeConfig
、coder.EmbeddedCodeConfig
、および coder.MexCodeConfig
も使用できます。
特定の関数のコード生成に関する考慮事項を調べる方法
コード生成でサポートされている関数については、そのリファレンス ページに "拡張機能" というタイトルのセクションが含まれています。このセクションには、これらの関数のコードを生成する際の特別な考慮事項がすべてリストされています。例については、interp2
の "拡張機能" を参照してください。
coder.extrinsic
の呼び出し
coder.extrinsic
の呼び出しにより、関数が外部関数として宣言されます。コード ジェネレーターは外部関数の本体のコードを生成せず、代わりに MATLAB® エンジンを使用して呼び出しを実行します。
参考
coder.target
| coder.screener
| coder.ceval
| coder.extrinsic
| codegen
| coder.config
| coder.CodeConfig
| coder.EmbeddedCodeConfig
| coder.MexCodeConfig