一般的コード生成のフローフロー
santistics and Machine Learning Toolbox™のののの关数に対する一般的なコード生成ワークワークフロー,,,,MATLAB®CODER™で说明れワークフローと同じ。详细については,MATLAB编码器入门(MATLAB编码器)を参照ください机械学习モデルオブジェクト关数コード方法を学ぶ学ぶは,コード生成の紹介を参照しください。
この例,のチャートでさて一般的的なコード生成のワークフローフローについてについて简単に说明说明
エントリポイント関数の定義
“エントリ”关数はコード用にする关数で,,,最最上位位关数または"プライマリ"关数とも呼ばれます。代码根
(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.m
100个はは个の要素ある数値列ベクトルをなければならないなければならないことことを指定するにはは,,次次ののtestx = randn(100,1);代码根IQRCodeGen-args{testx}-报告
-报告
フラグは、コード生成レポートを生成します。コード生成レポート(MATLAB编码器)を参照しください。1つ次元任意のさするよう指定には,次次にに
-args
オプションでcoder.typeof
(MATLAB编码器)を使用します。-args {coder.typeof(example_value,,,,size_vector,,,,variable_dims)
example_value
,size_vector
,variable_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_value
の0
という値は型が双倍的
であることを意味します。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编码器)を参照しください。
データを渡し,IQR
,IQRCodeGen
および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编码器)