web-dev-qa-db-fra.com

MATLAB Compiler vs MATLAB Coder

Quelle est la différence entre les deux?

Pour autant que je le comprenne, le compilateur MATLAB enveloppe le code MATLAB dans un fichier .exe afin qu'il puisse être utilisé sans installer MATLAB, et ne nécessite que le MCR. De plus, MATLAB Builder NE peut également être utilisé pour produire des assemblys .Net à utiliser avec le framework .Net au lieu du fichier .exe, mais ils nécessitent toujours MCR.

Maintenant, je ne comprends pas à quoi servait MATLAB Coder? Il génère du code C/C++. Mais le code MATLAB est-il vraiment converti en C/C++, ou est-il simplement empaqueté comme dans le cas du compilateur MATLAB? A-t-il également besoin du MCR pour fonctionner?

Je comprends que ce n'est pas exactement une question de programmation. Mais j'ai cherché sur Internet et je n'ai toujours pas trouvé de réponse claire. Ce sont des produits très chers, donc j'aimerais savoir dans quoi je m'engage.

41
Win Coder

Le compilateur MATLAB chiffre et archive votre code MATLAB (qui reste MATLAB .m code) et le conditionne dans un wrapper exécutable léger (.exe ou .dll). Celui-ci est remis à l'utilisateur final avec le MATLAB Compiler Runtime (MCR). Si vous le souhaitez, le MCR peut également être intégré à l'exécutable.

Le MCR est librement redistribuable, et vous pouvez le considérer comme essentiellement une copie de MATLAB sans bureau frontal.

Lorsque l'utilisateur exécute l'exécutable, il désarchive et déchiffre le code MATLAB et l'exécute sur le MCR au lieu de MATLAB. Les applications fournies via cette méthode doivent donc fonctionner exactement de la même manière que dans MATLAB (y compris à la même vitesse).

Codeur MATLAB convertit un sous-ensemble du langage MATLAB en code C. Cela peut ensuite être utilisé de différentes manières, notamment en étant ramené dans MATLAB en tant que fichier mex, compilé avec un compilateur C pour être appelé à partir d'une autre application, ou livré sur un périphérique intégré. Puisqu'il s'agit de code C plutôt que de code MATLAB, il s'exécutera souvent (mais pas toujours) beaucoup plus rapidement que le code MATLAB d'origine. Le code C ne nécessite pas le MCR. Le sous-ensemble pris en charge du langage MATLAB est très étendu, mais il y a quelques restrictions notables que vous voudriez examiner avant de vous engager dans ce workflow. Le code produit est du code C, bien qu'il puisse produire un wrapper C++ si vous avez besoin d'utiliser un compilateur C++ plutôt qu'un compilateur C.

Le compilateur MATLAB est destiné au cas d'utilisation que vous souhaitez partager simplement et (assez) directement une application MATLAB que vous avez écrite avec quelqu'un qui ne le fait pas. avoir une copie de MATLAB. Depuis le déployé .m le code est crypté, il peut également être utilisé pour partager du code MATLAB tout en protégeant la propriété intellectuelle.

Codeur MATLAB a d'autres cas d'utilisation, comme vouloir accélérer le code MATLAB en le convertissant en un fichier mex, ou avoir besoin de produire du code C pour une autre application ou un appareil embarqué.

Si vous avez des questions plus détaillées, je vous recommande vraiment d'appeler MathWorks et de les poser.


Modifier: Les informations ci-dessus sont correctes pour les versions de MATLAB R2014b et inférieures. Depuis MATLAB R2015a, les fonctionnalités du compilateur MATLAB ont été remixées avec les fonctionnalités du MATLAB Builder produits, et il y a aussi un nouveau produit MATLAB Compiler SDK .

À partir de R2015a, Le compilateur MATLAB fonctionne de la même manière que décrit ci-dessus (c.-à-d. Chiffrer, archiver et empaqueter, mais ne produisant pas C), mais va maintenant empaqueter en tant que .exe et en tant que complément Excel (.xla). Avant R2015a, cette fonctionnalité était présente dans le produit MATLAB Builder EX pour Excel .

Depuis R2015a, le compilateur MATLAB ne produit plus de composants .dll. Cette fonctionnalité a été déplacée vers le nouveau produit SDK du compilateur MATLAB , qui comprend également des fonctionnalités pour produire des assemblys .NET et Java = classes. Avant R2015a, cette fonctionnalité était présente dans les produits MATLAB Builder NE for .NET et MATLAB Builder JA pour Java .

En d'autres termes:

Dans R2014b et ci-dessous, nous avions:

Compilateur MATLAB : produit des composants .exe et .dll

MATLAB Builder NE pour .NET : produire des assemblages .NET

MATLAB Builder JA pour Java : produire Java classes

MATLAB Builder EX pour Microsoft Excel : produit des compléments Excel.

Dans R2015a, nous avons:

Compilateur MATLAB : produire des compléments .exe et Excel

SDK du compilateur MATLAB : produit des assemblages .dll, .NET et Java classes Java.

La portée et les cas d'utilisation de MATLAB Coder n'ont pas changé dans ces versions (bien qu'il y ait de nouvelles fonctionnalités).


Edit: À partir de R2015b, MATLAB Compiler SDK produit également Python packages).


Des informations supplémentaires sur la distinction Codeur MATLAB et compilateur MATLAB pour C/C++ peuvent être trouvés ici .

Tableau de comparaison des différents Produits MATLAB pour la génération de code .

62
Sam Roberts

MATLAB Compiler SDK fournit des bibliothèques partagées qui s'exécutent sur un MATLAB Runtime (MCR). Il prend en charge la plupart des fonctionnalités de MATLAB, y compris les graphiques, et protège votre propriété intellectuelle en chiffrant votre code MATLAB.

MATLAB Coder, quant à lui, fournit un code source lisible et portable. Il prend en charge un sous-ensemble du langage MATLAB axé sur les algorithmes effectuant des calculs numériques.

Cette réponse MATLAB donne plus de détails en comparant ces deux approches:

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

Par exemple, MATLAB Compiler SDK peut être déployé uniquement sur des plates-formes qui prennent en charge MATLAB (Windows, Mac, Linux) tandis que MATLAB Coder génère du code C qui peut s'exécuter sur n'importe quelle plate-forme qui prend en charge le code C.

En outre, le code empaqueté de MATLAB Compiler SDK est chiffré pour protéger IP, tandis que le code C généré à partir de MATLAB Coder peut être protégé de la même manière que le code C manuscrit est protégé.

Il convient également de noter que le code C généré à partir de MATLAB Coder a le potentiel d'une exécution plus rapide tandis que le code empaqueté de MATLAB Compiler SDK s'exécutera aussi rapidement que dans MATLAB.

2
Bill Chou

Je ne suis pas un expert, mais le codeur est décrit comme générant du code C/C++ autonome , sans faire mention du MCR. Je remarque cependant qu'il dit qu'il ne prend en charge qu'un "sous-ensemble" du langage Matlab, que vous pouvez lire plus sur ici . Le compilateur semble simplement empaqueter votre code Matlab comme vous l'avez suggéré, il prend donc probablement en charge la plupart des fonctionnalités.

0
devrobf