Main Content

一般的コード生成のフローフロー

santistics and Machine Learning Toolbox™のののの关数に対する一般的なコード生成ワークワークフロー,,,,MATLAB®CODER™で说明れワークフローと同じ。详细については,MATLAB编码器入门(MATLAB编码器)を参照ください机械学习モデルオブジェクト关数コード方法を学ぶ学ぶは,コード生成の紹介を参照しください。

この例,のチャートでさて一般的的なコード生成のワークフローフローについてについて简単に说明说明

一般代码生成工作流程。步骤1:定义入口点函数。步骤2:生成代码。步骤3:验证生成的代码。

エントリポイント関数の定義

“エントリ”关数はコード用にする关数で,,,最最上位位关数または"プライマリ"关数とも呼ばれます。代码根(MATLAB编码器)を使用上位レベル关数をはできので,コード生成生成に対応する关数关数を呼び出すエントリエントリポイントポイントポイント,代码根を使用してエントリポイント関数の C/C++ コードを生成しなければなりません。エントリポイント関数内のすべての関数がコード生成をサポートしなければなりません。

matlabのについてのを生成ようているを指示するためためコンパイラ命令%#codegen(または)をエントリ关数ののの追加します。この。を追加するするするとと,,コードコードコードコードコード生成时时时ににににエラーエラーエラーエラーににになるなる违反违反违反コードアナライザーによるのチェック(MATLAB编码器)を参照しください。

たとえば,IQRを使用してデータセットの四分位数間範囲を推定するコードを生成するには、次の関数を定義します。

functionr = iqrcodegen(x)%#codegen%IQRCODEGEN估计四分位数%iqrcodegen返回数据x的四分位数范围%单位或双重矢量。r = iqr(x);结尾
入力引数としてvararginを指定することにより、オプションの入力引数に対応できます。詳細は、可変长リストのコード生成 (MATLAB编码器)コード生成の可変サイズ指定指定を参照しください。

コードの生成

コンパイラの設定

c/c ++コード生成するは,设定れたにアクセスできなけれなければなりませんんMATLAB编码器は,れいるインストール済みコンパイラをてます。。のののののコンパイラコンパイラコンパイラコンパイラをおよび変更するするにははは,,

mex-设置
詳細は,既定のコンパイラ変更を参照しください。

代码根の使用によるの生成

コンパイラをした后,,代码根(MATLAB编码器)またはMATLAB编码器アプリを使用してエントリポイント関数のコードを生成します。MATLAB编码器アプリをしコードをする方法については,MATLAB编码器アプリを使用した MEX 関数の生成(MATLAB编码器)を参照しください。

コマンドラインコードをするには,代码根(MATLAB编码器)c++ c ++ははは静的言语な,エントリエントリポイントポイント关数内内のの変数変数ののプロパティプロパティプロパティををコンパイルコンパイル时时代码根を呼び出すときに-argsオプション使用てエントリポイントのすべて入力について型とサイズを指定指定。。。

  • データ型な配列のサイズを指定ためののデータ型およびおよびおよび配列配列サイズサイズをもつ一连一连の値値をををを表す表す表すiqrcodegen.m100个はは个の要素ある数値列ベクトルをなければならないなければならないことことを指定するにはは,,次次のの

    testx = randn(100,1);代码根IQRCodeGen-args{testx}-报告

    -报告フラグは、コード生成レポートを生成します。コード生成レポート(MATLAB编码器)を参照しください。

  • 1つ次元任意のさするよう指定には,次次にに-argsオプションでcoder.typeof(MATLAB编码器)を使用します。

    -args {coder.typeof(example_value,,,,size_vector,,,,variable_dims
    example_valuesize_vectorvariable_dimsの値生成さコードが受け入れる入力のプロパティを指定します。

    • 入力配列は,example_valueの例値とデータ型です。

    • 対応するvariable_dimsの値が错误的である场合,size_vectorは入力の配列サイズ。。

    • 対応するvariable_dimsの値がtrueである场合,size_vectorは配列の上限です。

    • variable_dimsは,各が可変と固定サイズどちらかを指定します値値true(logical 1) は対応する次元が可変サイズであることを意味します。値错误的(logical 0) は対応する次元が固定サイズであることを意味します。

    可変サイズのは,コンパイルに値の个数不明不明であるデータの场合场合ににたとえばたとえばたとえばiqrcodegen.mから生成たが任意の长精度数値列ベクトルを受け入れることができることができるよう指定するするには,,次次次の

    testx = coder.typeof(0,[Inf,1],[1,0]);代码根IQRCodeGen-args{testx}-报告

    MATLABの既定の数値データ型は双倍的なので,example_value0という値は型が双倍的であることを意味します。size_vector[INF,1]という値とvariable_dims[1,0]1番目はは番目のサイズが制限なくなく,,,,,番目番目番目番目の次元ののサイズサイズがががががににににささされる

    メモ

    可変サイズ指定はに影响する性あります。详细については,可変サイズ配列に対する割り当ての制御(MATLAB编码器)を参照しください。

  • サポートさと値ペアの引数の配列を指定するには,Coder.constant(MATLAB编码器)を使用て配列定数として指定ます。たとえば,'姓名'iqrcodegen.mの有効な名前と値のペアの引数であり、対応する値valueが数値し。この场合,ように入力し。。

    代码根IQRCodeGen-args{testx,coder.constant('name'),value}-报告

詳細については、コマンドラインでのCコードの生成(MATLAB编码器)およびエントリポイント関数の入力のプロパティの指定(MATLAB编码器)を参照しください。

ビルドタイプ

MATLAB编码器は,のについてコード生成できます。

  • mex(matlab実行ファイル)关数

  • C/C ++コードコード

  • C/C ++コードコードさコンパイルコンパイルコンパイルさされるコード

  • C/C ++コードコードさにににコンパイルコンパイルさされるコード

  • C/C ++コードコードさにににコンパイルコンパイルさされるコード

代码根(MATLAB编码器)-configオプション使用てビルドタイプ指定でき。コードオプションの设定の详细详细,,,ビルド设定の构成(MATLAB编码器)を参照しください。

既定では,代码根mex关数关数。memex关数关数关数关数ははできるc/c/c ++プログラムmexプログラムmex关数mex关数matlab关数关数关数を使用ととと,,,,,,ののののアルゴリズムをを化しができ。详细は,matlabアルゴリズムアルゴリズム化化(MATLAB编码器)MATLABで MEX 関数をテストする理由(MATLAB编码器)を参照しください。

コード生成レポート

-报告をし,コード生成レポート作成作成できます。このレポート,コード生成生成生成のののののの问题问题问题ののデバッグデバッグとととたたたたたたたたたたたたたたれれれれコード生成レポート(MATLAB编码器)を参照しください。

生成さたコードの确认

mex关数テストて生成さされたがが元元元コードコードコードコード同じ机能机能机能ををかかどうかかををを确认确认确认しします。。このこのこのこのテストテストを実行実行ためためため,,,,,,,mex关数关数しててから,を比较ししスタンドスタンドアロンアロンアロンコードコードコードをををを生成するするするするするででででででででででで关数关数关数关数を実行するすると时実行エラーエラーををををををコードでこのようエラーの诊断はるかにになります。详细は,MATLABで MEX 関数をテストする理由(MATLAB编码器)を参照しください。

データを渡し,IQRIQRCodeGenおよびiqrcodegen_mexが同じ数间を返すかか确认确认ますます。

testx = randn(100,1);r = iqr(testx);r_entrypoint = iqrcodegen(testx);r_mex = iqrcodegen_mex(testx);

是平等的を使用て出力比较します。

iSequal(r,r_entrypoint,r_mex)

すべてのが等しい场合,是平等的は逻辑1(true)ををます。。

テストファイルとcoder.runtest(MATLAB编码器)Mex关数关数关数确认するもでき。详细について,,,matlabコードからされるコードテストテスト(MATLAB编码器)を参照しください。

参考

(MATLAB编码器)

关连するトピック