MATLABコーダからのMATLABコードは、独立して読み取り可能な、ポータブル生成C / C ++コード。
3つのステップを生成するために使用されるコーダMATLABコード:①コードを生成するためのMATLABアルゴリズムを調製し; ②互換性チェックMATLABコード(いくつかのMATLABコードステートメントは、C / C ++コードとは見なされない); ③ソースコードまたは最終用途MEXを生成します。
MATLAB CoderののC ++コードを使用して生成し、VS2008で確認します。
簡単な例、数2を掛けます。
1、インストールmatlab2011a以降。
2、簡単なfoo.mファイルを生成します。
関数c = FOO(a、b)は%#コード生成
%この関数muliplies aとbの
C = * bの
これは、エラーを防ぐことができます%#codegenを警告
3、コマンドウィンドウで、MEX -setupを入力して、既存のコンパイラを選択します。
4、コマンドウィンドウで、タイプコーダ(GUI)、MATLAB Coderのプロジェクトポップアップダイアログボックス、入力します。
プロジェクト名のfoo.prjに新しい名前]タブ5.;オクラホマ、MATLAB CoderのMEX関数のポップアップダイアログボックスをクリックしてください。
6、[概要]タブでは、ポップアップダイアログボックスで、[foo.m開いて、ファイルの追加]をクリックします。
7、...例によって定義]を選択、変数aをクリックして、MATLAB Coderのは、MATLAB式、[OK]をクリックし実施例によりポップアップダイアログボックスの入力5を定義し、bも同じ変数に対応する操作、入力6です。
8、[ビルド]タブ、C / C ++静的ライブラリで選択した出力タイプを選択し、コードのみを生成]を選択し、
図9は、その他の設定]をクリックし、GeneralàLanguageはC ++を選択し、すべてのオプションを削除するインターフェイスのオプション;閉じます。
10、コンパイル、ビルドをクリックします。この場合、ビューレポート、ポップアップダイアログボックスコード生成レポートをクリックし、変数A、B、Cは、対応する変数の情報を表示します。
11、VS2008はKaodao関連ディレクトリfoo_types.hコンソールアプリケーション、結果の文書foo.hという、foo.cpp、rtwtypes.hを構築し、アプリケーションに追加使用して、
12、foo.cppファイル内の#include「stdafx.hを」を追加; // VC ++ 6.0は無視され、実際のテストをライブラリを見つけることができません
13、TEST.CPPファイルのコード://はファイルの独自のテストを書きます
//#は "stdafx.hを" //無視が含ま
#include "foo.hという"
書式#include <iostreamの>
名前空間stdを使用。
INT _tmain(INT ARGC、_TCHAR * ARGV [])(実際の主に//テスト)
{
ダブルA = 0.0、B = 0.0、C = 0.0。
CIN >> A >> B;
C = FOO(A、B)。
裁判所未満<< "C =" << C <<てendl;
0を返します。
}
より複雑な例では、Nの数-の乗根。
1、2 .mファイル:
nrt.m:
関数[nth_rt、反復、hstry] = NRT(のvarargin)%位のコード生成
%この関数は、見つけるために、ニュートンの検索技術を使用します。
%番号、公差、TOLのn番目の根。
%平方根
%のNRT(10、2)、又はNRT(10、2、1E-9)
%「n」がルート
%のNRT(10、N)、又はNRT(10、nは、1E-9)
=のvarargin {1}。
N =のvarargin {2}。
関数nargin〜= 3の場合
TOL = 1E-9。
他
TOL =のvarargin {3}。
終わり
<0の場合
nth_rt = 0;
イテレーション= 0;
hstry = 0;
他
[nth_rt、hstry] = newtonSearchAlgorithm(N、TOL)。
イテレーション=長さ(見つける(hstry〜= 0));
%反復= SUM(hstry〜= 0)。
終わり
newtonSearchAlgorithm.m:
関数[X、H] = newtonSearchAlgorithm(B、N、TOL)%位のコード生成
%が「A」、を考えると、この関数は、n番目のルートを検索します
ここで見つけることによって%番号:X ^ 0 = NA
coder.inline(「決して」); 1つのファイルを生成するために、%許可のC ++
notDone = 1。
改めて= 0; %洗練推測の初期化
= 1; %最初の推測
CNT = 0;
H =ゼロ(50、1)。
H(1)=。
notDoneながら、
CNT = CNT + 1。
[CURVAL、スロープ] = f_and_df(B、N)。% 平方
yint = CURVAL - スロープ*;
新た= -yint /勾配; %新しい推測
H(CNT)=改めて。
もし(ABS(新たに-A)<TOL)%のブレークを、それが収束しています場合には
notDone = 0;
CNT> 49 TER 50回の反復のelseif、停止
notDone = 0;
改めて= 0;
他
=新た;
終わり
終わり
X =改めて。
関数[F、DF = f_and_df(B、N)
%我々の関数はF = A ^ NBであり、それはデリバティブのn個の*のA ^(N-1)です。
F = A ^ NB。
DF = N * A ^(N-1)。
2、コマンドウィンドウで、タイプコーダ(GUI)、MATLAB Coderのプロジェクトポップアップダイアログボックス、入力します。
3.プロジェクト名nrt.prjに新しい名前]タブを入力し、[OK]を、MATLAB CoderのMEX関数のポップアップダイアログボックスをクリックしてください。
4、[概要]タブでは、ポップアップダイアログボックスで、[nrt.m開いて、ファイルの追加]をクリックします。
図5に示すように、三つの入力は、それぞれ10,2,1e-9、追加、2つの入力があってもよいです。
6、[ビルド]タブ、C / C ++静的ライブラリで選択した出力タイプを選択し、コードのみを生成]を選択し、
7は、その他の設定]をクリックし、GeneralàLanguageはC ++を選択し、すべてのオプションを削除するインターフェイスのオプション;閉じます。
8、コンパイル、ビルド]をクリックし、ビューレポート、コード生成レポートのポップアップダイアログボックスをクリックしてください。
9、使用VS2008は、コンソールアプリケーション、結果の文書のnrt.cpp、nrt.h、newtonSearchAlgorithm.cpp、newtonSearchAlgorithm.hは、nrt_types.h、rtwtypes.h Kaodao関連するディレクトリを構築し、アプリケーションに追加します;
それぞれ10、nrt.cpp、newtonSearchAlgorithm.cppファイル内の#include "stdafx.hを" を追加します。
11、TEST.CPPファイルのコード:
#include "stdafx.hを"
#include "nrt.h"
書式#include <iostreamの>
名前空間stdを使用。
int型_tmain(int型のargc、_TCHAR * ARGV [])
{
二重varargin_1 = 0、varargin_2 = 0、varargin_3 = 1E-9。
CIN >> varargin_1 >> varargin_2。
ダブルnth_rt = 0、イテレーション= 0;
二重hstry_data [50] = {0}。
INT hstry_sizes [1] = {0}。
NRT(varargin_1、varargin_2、varargin_3、&nth_rt、および反復、hstry_data、hstry_sizes)。
裁判所未満<< "nth_rt =" << nth_rt <<てendl;
裁判所未満<< "イテレーション=" <<イテレーション<<てendl;
裁判所未満<< "hstry_data =" <<てendl;
以下のために(; iは50 <; I = 0 int型私は++)
{
COUT << hstry_data [I] << ENDL。
}
COUT << "hstry_sizes =" << hstry_sizes [0] << ENDL。
0を返します。
}
参考:
1、MATLAB Coderのビデオのウェビナー録画http://v.youku.com/v_show/id_XMzA3MTA3NDQ4.html
2、http://www.mathworks.cn/products/matlab-coder /
オリジナル: https://blog.csdn.net/bhj5787/article/details/17093961