このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
エントリポイント関数は,コードを生成する最上位のMATLAB®関数です。多くのアプリケーションでは,単一のエントリポイント関数のコードのみ生成する必要があります。また,複数のエントリポイント関数からC / c++コードを同時に生成することもできます。複数のエントリポイント関数を使用すると,以下を実行できます。
エントリポイント関数ごとに独立したライブラリを生成した場合よりも高いレベルの機能を含む多機能C / c++ライブラリを生成する。
複数のエントリポイント関数が同じサブ関数に依存するときにコードをより効率的に共有するコードを生成する。
同じグローバル変数を使用している場合など,共有メモリを使用して通信できるライブラリ関数を生成する。
C / c++ライブラリを生成する前に,MATLABでエントリポイントの動作を検証する墨西哥人関数を生成することをお勧めします。
複数のエントリポイント関数のコードを生成するには,codegen
リファレンスページの構文を使用します。既定では,墨西哥人コードの生成の場合,codegen
は次を実行します。
現在のフォルダーに墨西哥人関数を生成します。複数のエントリポイント関数を指定するときに、1 つの MEX 関数のみ生成されます。生成された MEX 関数から単一のエントリポイント関数を呼び出すには、墨西哥人関数からの1つのエントリポイント関数の呼び出しを参照してください。
墨西哥関数に
という名前をつけます。的名字
_mex
は,アルファベット順の最初のエントリポイント関数の名前です。的名字
生成されたファイルをサブフォルダーcodegen/mex/
に保存します。子文件夹
子文件夹
は,左から右の順序(codegen
コマンドの後に入力されているため)の最初のエントリポイント関数の名前です。
-o
オプションを使用して出力ファイル名とサブフォルダー名を指定できます。
codegen-omyOutputFileNamefun1fun2
この場合,codegen
はmyOutputFileName
という名前の墨西哥人関数を現在のフォルダーに生成し,生成ファイルをサブフォルダーcodegen /墨西哥人/ myOutputFileName
に保存します。
2つのエントリポイント関数,ep1
とep2
の墨西哥人関数を生成します。関数ep1
は1つの入力を取り,ep2
は2つの入力を取ります。-o
オプションを使用して,生成される墨西哥人関数をsharedmex
という名前にします。
codegen-omySharedMexep1arg游戏{单(0)}ep2arg游戏{0, 0 (1024)}
codegen
はmySharedMex.mex
という名前の墨西哥人関数を現在のフォルダーに生成し,生成ファイルをサブフォルダーcodegen/mex/mySharedMex
に保存します。
スタンドアロンのライブラリコードを生成してコンパイルするには,配置:自由
オプションを使用します。
codegen配置:自由-omySharedLibep1arg游戏单(0)ep2arg游戏{0, 0 (1024)}
codegen
コマンドによって,C / c++ライブラリコードがcodegen / lib / mySharedLib
フォルダーに生成されます。
1つのエントリポイント関数の出力の型を別の関数の入力の型として使用するには,入力としてのエントリポイント関数出力の受け渡しを参照してください。コード生成レポートでエントリポイント関数を確認する方法については、コード生成レポートを参照してください。
複数のエントリポイント関数fun1
、fun2
などのfunN
から生成された墨西哥人関数myMex
があるとします。次の構文を使用して,1つのエントリポイント関数fun_i
を呼び出すことができます。
myMex (“fun_i”param1, paramM . .)
ここでは,fun_i
用MATLABの関数シグネチャはparamM fun_i (param1 . .)
です。
たとえば,エントリポイント関数ep1
とep2
を含む墨西哥人関数mySharedMex
を考えてみます。入力パラメーターu
と共にep1
を呼び出すには,次のように入力します。
mySharedMex (“ep1”, u)
入力パラメーターv
およびx
と共にep2
を呼び出すには,次のように入力します。
mySharedMex (“ep2”、v、x)
この例では,MATLAB编码器™アプリを使用して複数のエントリポイント関数のためのコードを生成する方法を示します。
エントリポイント関数の作成
ローカルの書き込み可能なフォルダーで、以下のコードを含む MATLABファイルep1.m
を作成します。
作用y=ep1(u)% # codegeny = u;
同じローカルの書き込み可能なフォルダーで,以下のコードを含むMATLABファイルep2.m
を作成します。
作用Y = ep2(u, v)% # codegenY = u + v;
テストファイルの作成
ep1.m
およびep2.m
が含まれているフォルダーに,サンプル入力と共にep1
およびep2
を呼び出すMATLABファイルep_test.m
を作成します。
作用[y, y1] = ep_test y = ep1(single(2));Y1 = ep2(double(3), double(4)));
MATLAB编码员アプリを開く
MATLABツールストリップの[アプリ]タブの[コード生成)の下で、MATLAB编码器アプリアイコンをクリックします。
ソースファイルの指定
[ソースファイルの選択]ページで,エントリポイント関数の名前ep1
を入力または選択します。
現在のフォルダーに既定の名前ep1.prj
をもつプロジェクトが作成されます。コード生成エラーを防ぐためには、プロジェクト ファイルとすべてのエントリポイント MATLAB 関数ファイルを同じフォルダーに保存しなければなりません。
エントリポイント関数のリストにep2
を追加するために,[エントリポイント関数の追加)をクリックします。エントリポイント関数の名前ep2
を入力または選択します。
(入力の型を定義]ステップに進むには,(次へ]をクリックします。アプリによって関数のコーディングの問題とコード生成の準備状態が解析されます。問題が検出された場合は、[コード生成の準備状態の確認]ページが開くので、ここで問題を確認して修正できます。この例では問題は検出されないので、(入力の型を定義]ページが表示されます。
入力の型の定義
Cでは静的なデータ型が使用されるため,MATLAB编码器は MATLABファイル内のすべての変数のプロパティをコンパイル時に判別しなければなりません。すべてのエントリポイント関数の入力のプロパティを指定しなければなりません。MATLAB编码器は,エントリポイント関数の入力のプロパティからMATLABファイル内のすべての変数のプロパティを推定できます。
MATLAB编码器が自動的に型を定義するために使用するテストファイルを指定します。
テストファイルep_test.m
を入力または選択します。
(入力の型の自動定義]をクリックします。
テストファイルep_test.m
は入力型の例と共にエントリポイント関数ep1
およびep2
を呼び出します。MATLAB编码器はep1
の入力u
が单(1 x1)
であることを推定します。ep2
については、u
およびv
が双(1x1)
であることを推定します。
(実行時の問題の確認]ステップに進むには,(次へ]をクリックします。
実行時の問題の確認
(実行時の問題の確認]ステップでは,エントリポイント関数からの墨西哥人ファイルの生成,墨西哥人関数の実行および問題の報告が行われます。このステップはオプションです。ただし,このステップを実行することをお勧めします。生成されたCコードでの診断が難しいランタイムエラーを検出して修正することができます。
(実行時の問題の確認]ダイアログボックスを開くために[問題の確認]矢印をクリックします。
入力の型の定義に使用したテストファイルep_test
が、アプリによって [テスト ファイル] フィールドに入力されます。
[問題の確認]をクリックします。
ep1
とep2
用のep1_mex
という名前の 墨西哥関数が生成されます。ep1
およびep2
の呼び出しを 墨西哥関数の呼び出しに置き換えてテスト ファイルep_test
が実行されます。墨西哥人関数の生成または実行中に問題が検出された場合は、警告およびエラー メッセージが表示されます。問題のあるコードに移動し、問題を修正するには、これらのメッセージをクリックします。この例ではアプリは問題を検出しません。
[コード生成)ステップに進むには,(次へ]をクリックします。
墨西哥関数の生成
[生成]ダイアログボックスを開くために[生成]矢印をクリックします。
[ビルド タイプ]を(墨西哥人)
に設定します。
[出力ファイル名]がep1_mex
であることを確認します。既定では,アルファベット順で最初のエントリポイント関数の名前が使用されます。
[生成]をクリックします。
MATLAB编码器によってプロジェクトがビルドされます。墨西哥人関数ep1_mex
が現在のフォルダーに作成されます。また、MATLAB编码器は,codegen /墨西哥人/ ep1_mex
というサブフォルダーに他のサポートファイルを生成します。MATLAB编码器は,MATLAB関数の名前を生成するファイルのルート名として使用します。命名規則で説明されているように,墨西哥人ファイル用にプラットフォーム固有の拡張子が作成されます。
これで,MATLABで墨西哥人関数をテストできます。墨西哥人関数からの1つのエントリポイント関数の呼び出しを参照してください。
ep1
とep2
のスタティックライブラリを生成する場合,MATLAB编码器はプロジェクトをビルドし,Cライブラリep1
とサポートファイルを既定のフォルダーcodegen / lib / ep1
に生成します。