MATLAB Comstackr vs MATLAB Coder

Quelle est la différence entre les deux?

Si je comprends bien, MATLAB Comstackr encapsule le code MATLAB dans un fichier .exe afin qu’il puisse être utilisé sans installer MATLAB, et nécessite uniquement le MCR. En plus de cela, MATLAB Builder NE peut également être utilisé pour produire des assemblys .Net à utiliser avec .Net au lieu du fichier .exe, mais ils nécessitent toujours MCR.

Maintenant, je ne comprends pas ce que MATLAB Coder a utilisé? Il génère du code C / C ++. Mais le code MATLAB est-il réellement converti en C / C ++, ou est-il simplement empaqueté comme dans le cas de MATLAB Comstackr? Est-ce que le MCR doit également 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 et j’aimerais savoir dans quoi je m’embarque.

MATLAB Comstackr crypte et archive votre code MATLAB (qui rest sous la .m code MATLAB .m ) et le conditionne dans un wrapper exécutable mince (soit .exe ou .dll). Ceci est livré à l’utilisateur final avec le MATLAB Comstackr Runtime (MCR). Si vous le souhaitez, le MCR peut également être intégré à l’exécutable.

Le MCR est librement redissortingbuable et vous pouvez le considérer essentiellement comme une copie de MATLAB sans poste de travail frontal.

Lorsque l’utilisateur exécute l’exécutable, il recherche et déchiffre le code MATLAB et l’exécute sur le MCR au lieu de MATLAB. Les applications livrées via cette méthode doivent donc fonctionner exactement comme elles le font dans MATLAB (y compris la même vitesse).

MATLAB Coder convertit un sous-ensemble du langage MATLAB en code C. Cela peut alors être utilisé de différentes manières, y compris être renvoyé dans MATLAB en tant que fichier mex, compilé avec un compilateur C pour être appelé depuis une autre application, ou remis à un périphérique intégré. Comme il s’agit d’un code C plutôt que d’un code MATLAB, il sera souvent (mais pas toujours) exécuté 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 vous devez examiner quelques ressortingctions importantes avant de vous engager dans ce stream de travail. Le code produit est le 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.

MATLAB Comstackr est destiné au cas d’utilisation que vous souhaitez partager simplement et (équitablement) directement une application MATLAB que vous avez écrite avec une personne ne disposant pas d’une copie de MATLAB. .m code .m déployé étant crypté, il peut également être utilisé pour partager le code MATLAB tout en protégeant la propriété intellectuelle.

MATLAB Coder a d’autres cas d’utilisation, tels que la nécessité d’accélérer le code MATLAB en le convertissant en fichier mex, ou de produire du code C pour une autre application ou un périphérique intégré.

Si vous avez des questions plus détaillées, je vous recommande de simplement appeler MathWorks et de leur demander.


Edit : Les informations ci-dessus sont correctes pour les versions de MATLAB R2014b et suivantes. Depuis MATLAB R2015a, les fonctionnalités de MATLAB Comstackr ont été remixées avec les fonctionnalités des produits MATLAB Builder , et il existe également un nouveau produit MATLAB Comstackr SDK .

A partir de R2015a, MATLAB Comstackr fonctionne de la même manière que décrit ci-dessus (c.-à-d. Encrypt, archive et package, mais ne produit pas de C), mais va maintenant contenir .exe et un complément Excel (.xla). Avant R2015a, cette fonctionnalité était déjà présente dans le produit MATLAB Builder EX pour Excel .

À partir de R2015a, MATLAB Comstackr ne produit plus de composants .dll. Cette fonctionnalité a été déplacée vers le nouveau produit MATLAB Comstackr SDK , qui comprend également des fonctionnalités permettant de produire des assemblys .NET et des classes Java. Avant R2015a, cette fonctionnalité était déjà présente dans les produits MATLAB Builder NE pour .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 assemblys .NET

MATLAB Builder JA pour Java : produire des classes Java

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

Dans R2015a, nous avons:

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

MATLAB Comstackr SDK : produire des assemblys .dll, .NET et des classes Java.

La scope et les cas d’utilisation de MATLAB Coder n’ont pas changé entre ces versions (bien qu’il existe de nouvelles fonctionnalités).


Edit : A partir de R2015b, MATLAB Comstackr SDK produit également des packages Python.


Des informations supplémentaires sur la distinction entre MATLAB Coder et MATLAB Comstackr for C / C ++ sont disponibles ici .

Tableau comparatif des différents produits MATLAB pour la génération de code .

MATLAB Comstackr 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 cryptant 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.

Ce MATLAB Answers apporte plus de détails en comparant ces deux approches:

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

Par exemple, MATLAB Comstackr SDK peut être déployé uniquement sur les plates-formes prenant en charge MATLAB (Windows, Mac, Linux), tandis que MATLAB Coder génère du code C pouvant s’exécuter sur toute plate-forme prenant en charge le code C.

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

Il est également intéressant de noter que le code C généré par MATLAB Coder peut être exécuté plus rapidement, tandis que le code fourni par MATLAB Comstackr SDK s’exécute aussi rapidement que dans MATLAB.

Je ne suis pas un expert, mais le codeur est décrit comme générant du code C / C ++ autonome , ne faisant aucune mention du MCR. Je remarque cependant qu’il dit qu’il ne supporte qu’un “sous-ensemble” du langage Matlab, sur lequel vous pouvez en savoir plus ici . Le compilateur semble emballer votre code Matlab comme vous l’avez suggéré, et supporte probablement la plupart des fonctionnalités.