このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
機械学習モデルのオブジェクト関数ではない统计和机器学习工具箱™の関数に対する一般的なコード生成のワークフローは,MATLAB®编码器™で説明されているワ,クフロ,と同じです。詳細にいては,MATLAB编码器入門(MATLAB编码器)を参照してください。機械学習モデルのオブジェクト関数のコ,ド生成方法を学ぶには,コ,ド生成の紹介を参照してください。
この例では,次のフローチャートで要約されている一般的なコード生成のワークフローについて簡単に説明します。
“エントリポ电子邮箱ント”関数は,コ,ド生成用に定義する関数で,“最上位”関数または"プラ电子邮箱マリ"関数とも呼ばれます。codegen
(MATLAB编码器)を使用して最上位レベルの関数を呼び出すことはできないので,コード生成に対応する関数を呼び出すエントリポイント関数を定義し,codegen
を使用してエントリポc / c++コドを生成しなければなりません。エントリポント関数内のすべての関数がコド生成をサポトしなければなりません。
MATLABのアルゴリズムについてのコードを生成しようとしていることを指示するため,コンパイラ命令% # codegen
(またはプラグマ)をエントリポ▪▪▪ント関数のシグネチャの後に追加します。この命令を追加すると,コード生成時にエラーになる違反の診断と修正をMATLAB代码分析器が支援します。コドアナラザによるコドのチェック(MATLAB编码器)を参照してください。
たとえば,位差
を使用してデ,タセットの四分位数間範囲を推定するコ,ドを生成するには,次の関数を定義します。
函数r = iqrCodeGen(x)% # codegen估计四分位范围% iqrCodeGen返回数据x的四分位范围,%单精度或双精度矢量。R = iqr(x);结束
变长度输入宗量
を指定することにより,オプションの入力引数に対応できます。詳細は,可変長引数リストのコ,ド生成
(MATLAB编码器)とコド生成用の可変サズ引数の指定を参照してください。
C/ c++コドを生成するには,正しく設定されたコンパラにアクセスできなければなりません。MATLAB编码器は,サポトされているンストル済みコンパラを探して使用します。既定のcコンパaaplラを表示および変更するには,次のように入力します。
墨西哥人设置
codegen
の使用によるコ,ドの生成コンパ电子邮箱ラを設定した後で,codegen
(MATLAB编码器)またはMATLAB编码器アプリを使用してエントリポ▪▪ント関数のコ▪▪ドを生成します。MATLAB编码器アプリを使用してコドを生成する方法にいては,MATLAB编码器アプリを使用したMEX関数の生成(MATLAB编码器)を参照してください。
コマンドランでコドを生成するには,codegen
(MATLAB编码器)を使用します。Cおよびc++は静的な型の言語なので,エントリポイント関数内のすべての変数のプロパティをコンパイル時に決定しなければなりません。codegen
を呼び出すときにarg游戏
オプションを使用して,エントリポ▪▪ント関数のすべての入力に▪▪いてデ▪タ型とサ▪▪ズを指定します。
データ型と正確な入力配列のサイズを指定するため,特定のデータ型および配列サイズをもつ一連の値を表すMATLAB式を渡します。たとえば,iqrCodeGen.m
から生成されたコードは100個の要素がある倍精度数値列ベクトルを受け入れなければならないことを指定するには,次のように入力します。
testX = randn(100,1);codegeniqrCodeGenarg游戏{testX}报告
报告
フラグは,コ,ド生成レポ,トを生成します。コ,ド生成レポ,ト(MATLAB编码器)を参照してください。
1 .以上の次元を任意の長さにすることができるよう指定するには,次のようにarg游戏
オプションで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
の値が真正的
である場合,size_vector
は配列サ@ @ズの上限です。
variable_dims
は,配列の各次元が可変サ▪▪ズと固定サ▪▪ズのど▪▪らであるかを指定します。値真正的
(逻辑1)は対応する次元が可変サesc escズであることを意味します。値假
(逻辑0)は対応する次元が固定サaapl .ズであることを意味します。
可変サ@ @ズの入力の指定は,コンパ@ @ル時に観測値の個数が不明であるデ@ @タの場合に便利です。たとえば,iqrCodeGen.m
から生成されたコードが任意の長さの倍精度数値列ベクトルを受け入れることができるよう指定するには,次のように入力します。
testX = code .typeof(0,[Inf,1],[1,0]);codegeniqrCodeGenarg游戏{testX}报告
Matlabの既定の数値デ,タ型は双
なので,example_value
の0
という値はデ,タ型が双
であることを意味します。size_vector
の(正,1)
という値とvariable_dims
の(1,0)
という値は1番目の次元のサイズが可変で制限がなく,2番目の次元のサイズが1に固定されることを意味します。
メモ
可変サ▪▪ズ入力の指定はパフォ▪▪マンスに影響する可能性があります。詳細にいては,可変サ@ @ズの配列に対するメモリ割り当ての制御(MATLAB编码器)を参照してください。
サポ,トされる名前と値のペアの引数などの文字配列を指定するには,编码器。常数
(MATLAB编码器)を使用して文字配列を定数として指定します。たとえば,“名字”
がiqrCodeGen.m
の有効な名前と値のペアの引数であり,対応する値价值
が数値であるとします。この場合,次のように入力します。
codegeniqrCodeGenarg游戏{testX, coder.Constant(“名字”),值}报告
詳細にいては,コマンドラ@ @ンでの@ @ c @ @コ@ @ドの生成(MATLAB编码器)およびエントリポ@ @ント関数の入力のプロパティの指定(MATLAB编码器)を参照してください。
MATLAB编码器は,以下のタ@ # @プに@ # @いてコ,ドを生成できます。
Mex (matlab実行可能ファaapl . exeル)関数
スタンドアロンc / c++コド
c / c++コド
c / c++コド
c / c++コド
codegen
(MATLAB编码器)の配置
オプションを使用して,ビルドタ。コド生成オプションの設定の詳細にいては,ビルド設定の構成(MATLAB编码器)を参照してください。
既定では,codegen
はmex関数を生成します。Mex関数は,matlabから実行できるc / c++プログラムです。墨西哥人関数を使用すると,MATLABのアルゴリズムを高速化し,生成されたコードの機能と実行時の問題をテストすることができます。詳細は,Matlabアルゴリズムの高速化(MATLAB编码器)とMatlabでmex関数をテストする理由(MATLAB编码器)を参照してください。
报告
フラグを使用して,コ,ド生成レポ,トを作成できます。このレポトは,コド生成の問題のデバッグと,生成されたc / c++コドの確認に役立ます。詳細にいては,コ,ド生成レポ,ト(MATLAB编码器)を参照してください。
墨西哥人関数をテストして,生成されたコードが元のMATLABコードと同じ機能を提供するかどうかを確認します。このテストを実行するため,元のMATLABコードの実行に使用したものと同じ入力を使用して墨西哥人関数を実行してから,結果を比較します。スタンドアロンコードを生成する前にMATLABで墨西哥人関数を実行すると,実行時エラーを検出して修正することもできます。生成されたスタンドアロンコ,ドでは,このようなエラ,の診断がはるかに困難になります。詳細は,Matlabでmex関数をテストする理由(MATLAB编码器)を参照してください。
デ,タを渡して,位差
、iqrCodeGen
およびiqrCodeGen_mex
が同じ四分位数間範囲を返すかどうかを確認します。
testX = randn(100,1);r = iqr(testX);r_entrypoint = iqrCodeGen(testX);r_mex = iqrCodeGen_mex(testX);
isequal
を使用して出力を比較します。
isequal (r, r_entrypoint, r_mex)
すべての入力が等しい場合,isequal
は逻辑1 (true)を返します。
テストファ@ @ルとcoder.runTest
(MATLAB编码器)を使用してmex関数を確認することもできます。詳細にいては,Matlabコ,ドから生成されるコ,ドのテスト(MATLAB编码器)を参照してください。
codegen
(MATLAB编码器)