45

What's the difference between the two?

As far as I understand it, MATLAB Compiler wraps the MATLAB code into a .exe file so that it can be used without installing MATLAB, and only requires the MCR. On top of it MATLAB Builder NE can also be used to produce .Net assemblies to be used with .Net framework instead of the .exe file, but they still require MCR.

Now I don't understand what MATLAB Coder used for? It generates C/C++ code. But is the MATLAB code really converted into C/C++, or is it merely packaged like in the case of MATLAB Compiler? Does it also need the MCR to run?

I understand that this is not exactly a programming question. But I have searched the internet and still haven't found a clear answer. These are very expensive products so I would like to know what I am getting into.

4

4 に答える 4

65

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 のコピーを持っていない人と簡単かつ (かなり) 直接的に共有したいユース ケースを対象としています。展開された.mコードは暗号化されているため、知的財産を保護しながら MATLAB コードを共有するためにも使用できます。

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

より詳細な質問がある場合は、MathWorks に電話して質問することを強くお勧めします。


編集: 上記の情報は、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およびMATLAB Builder JA for Javaに存在していました。

言い換えると:

R2014b 以前では、次のようになっていました。

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

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

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

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

R2015a では、次のようになります。

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

MATLAB Compiler SDK : .dll、.NET アセンブリ、および Java クラスを生成します。

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


編集: R2015b 以降、MATLAB Compiler SDKは Python パッケージも生成します。


C/C++ 用の MATLAB Coder と MATLAB Compiler の区別に関する追加情報は、ここにあります。

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

于 2013-08-08T14:35:33.380 に答える
2

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 と同じ速度で実行されることにも注意してください。

于 2015-09-15T21:44:53.027 に答える
0

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

于 2013-08-08T14:03:22.073 に答える