web-dev-qa-db-ja.com

MATLAB CompilerとMATLAB Coder

2つの違いは何ですか?

私の知る限り、MATLAB CompilerはMATLABコードを.exeファイルにラップし、MATLABをインストールせずに使用できるようにし、MCRのみを必要とします。さらに、MATLAB Builder NEを使用して、.exeファイルの代わりに.Netフレームワークで使用する.Netアセンブリを生成することもできますが、それでもMCRが必要です。

今、MATLAB Coderの使用目的がわかりませんか? C/C++コードを生成します。しかし、MATLABコードは実際にC/C++に変換されますか、それとも単にMATLAB Compilerのようにパッケージ化されているだけですか?実行するにはMCRも必要ですか?

これはプログラミングの問題ではないことを理解しています。しかし、私はインターネットを検索しましたが、まだ明確な答えが見つかりませんでした。これらは非常に高価な製品ですので、私が何に興味を持っているのか知りたいです。

41
Win Coder

MATLAB Compilerは、MATLABコード(MATLAB .mコード)、および薄い実行可能ファイル(.exeまたは.dll)ラッパーにパッケージ化します。これは、MATLAB Compiler Runtime(MCR)とともにエンドユーザーに配信されます。必要に応じて、MCRを実行可能ファイル内にパッケージ化することもできます。

MCRは自由に再配布可能であり、フロントエンドデスクトップのない基本的にMATLABのコピーと考えることができます。

ユーザーが実行可能ファイルを実行すると、MATLABコードをアーカイブ解除して復号化し、MATLABではなくMCRに対して実行します。したがって、このメソッドを介して配信されるアプリケーションは、MATLAB内とまったく同じように実行する必要があります(同じ速度を含む)。

MATLAB Coderは、MATLAB言語のサブセットをCコードに変換します。これは、mexファイルとしてMATLABに戻される、Cコンパイラでコンパイルされて別のアプリケーションから呼び出される、組み込みデバイスに配信されるなど、さまざまな方法で使用できます。 MATLABコードではなくCコードであるため、多くの場合(常にではありませんが)元のMATLABコードよりもはるかに高速に実行されます。 CコードにはMCRは必要ありません。サポートされているMATLAB言語のサブセットは非常に広範なものですが、このワークフローにコミットする前に確認したいいくつかの注目すべき制限があります。生成されるコードはCコードですが、CコンパイラではなくC++コンパイラを使用する必要がある場合は、C++ラッパーを生成できます。

MATLAB Compilerは、作成したMATLABアプリケーションを、作成していないMATLABアプリケーションを単純かつ(公正に)直接共有したいユースケースを対象としています。 MATLABのコピーがあります。デプロイされた.mコードは暗号化されており、知的財産を保護しながらMATLABコードを共有するためにも使用できます。

MATLAB Coderには、mexファイルに変換してMATLABコードを高速化したい、別のアプリケーション用のCコードを生成する必要がある、組み込みデバイス。

さらに詳細な質問がある場合は、MathWorksを呼び出して質問することをお勧めします。


Edit:上記の情報は、MATLAB R2014b以下のバージョンに適しています。 MATLAB R2015aの時点で、MATLAB Compilerの機能はMATLAB Builder製品、および新しい製品MATLAB Compiler SDKもあります。

R2015aの時点で、MATLAB Compilerは上記と同じ方法で動作します(つまり、暗号化、アーカイブ、パッケージ化、ただしCは生成されません)が、パッケージ化されます.exeおよびExcelアドイン(.xla)として。 R2015aより前は、この機能は製品に存在していましたMATLAB Builder EX for Excel

R2015aの時点で、MATLAB Compilerは.dllコンポーネントを生成しなくなりました。この機能は、新製品MATLAB Compiler SDKに移動されました。これには、.NETアセンブリおよびJava =クラス。R2015aより前は、この機能は製品に存在していましたMATLAB Builder NE for .NETおよび Java用のMATLAB Builder JA

言い換えると:

R2014b以前では、次のものがありました。

MATLAB Compiler:.exeおよび.dllコンポーネントを生成

MATLAB Builder NE for .NET:.NETアセンブリの生成

MATLAB Builder JA for Java:生成Javaクラス

Microsoft Excel用MATLAB Builder EX:Excelアドインを作成します。

R2015aには、次のものがあります。

MATLAB Compiler:.exeおよびExcelアドインを生成

MATLAB Compiler SDK:.dll、.NETアセンブリ、およびJavaクラス。

MATLAB Coderのスコープとユースケースは、これらのリリース間で変更されていません(新しい機能はありますが)。


Edit:R2015b以降、MATLAB Compiler SDKもPython =パッケージ。


区別するための追加情報 MATLAB CoderおよびC/C++用のMATLAB Compilerはここにあります

さまざまな比較表 コード生成用のMATLAB製品

62
Sam Roberts

MATLAB Compiler SDKは、MATLAB Runtime(MCR)に対して実行される共有ライブラリを提供します。グラフィックを含む、MATLABのほとんどの機能をサポートし、MATLABコードを暗号化して知的財産を保護します。

一方、MATLAB Coderは、読みやすく移植可能なソースコードを提供します。数値計算を実行するアルゴリズムに焦点を当てたMATLAB言語のサブセットをサポートしています。

このMATLAB Answersでは、これら2つのアプローチを比較してさらに詳しく説明します。

http://www.mathworks.com/matlabcentral/answers/223937-should-i-use-matlab-compiler-sdk-or-matlab-coder-to-integrate-my-matlab-applications-with- cc

たとえば、MATLAB Compiler SDKは、MATLABをサポートするプラットフォーム(Windows、Mac、Linux)にのみ展開できますが、MATLAB Coderは、Cコードをサポートするプラットフォームで実行できるCコードを生成します。

また、MATLAB Compiler SDKからパッケージ化されたコードはIPを保護するために暗号化されますが、MATLAB Coderから生成されたCコードは、手書きのCコードを保護するのと同じ方法で保護できます。

また、MATLAB Coderから生成されたCコードは、MATLAB Compiler SDKからパッケージ化されたコードがMATLABで実行するのと同じくらい速く実行される一方で、より高速に実行される可能性があることに注意してください。

2
Bill Chou

私は専門家ではありませんが、CoderはstandaloneC/C++コードを生成し、MCRについては言及していません。しかし、Matlab言語の「サブセット」のみをサポートしていると言っていることに気付きます。Matlab言語の詳細については、 here を参照してください。コンパイラは、お勧めしたとおりにMatlabコードをパッケージ化したように見えるため、おそらくほとんどの機能をサポートしています。

0
devrobf