Principales fonctionnalités

Application MATLAB Coder (à gauche) et rapport de génération de code (à droite) montrant le code C généré.


Exécution sur toute cible

MATLAB Coder™ traduit votre code MATLAB en code C et C++ ANSI/ISO efficace, lisible et portable. Vous pouvez utiliser n’importe quel compilateur C et exécuter le code généré sur n’importe quelle cible, du PC aux smartphones et tablettes, en passant par du hardware embarqué. Le code généré est libre de droits, déployez-le gratuitement dans des applications commerciales pour vos clients.

MATLAB Coder™ traduit votre code MATLAB en code C et C++ ANSI/ISO efficace, lisible et portable. Vous pouvez utiliser n’importe quel compilateur C et exécuter le code généré sur n’importe quelle cible, du PC aux smartphones et tablettes, en passant par du hardware embarqué. Le code généré est libre de droits, déployez-le gratuitement dans des applications commerciales pour vos clients.

Générez du code C et C++ lisible et portable à partir de code MATLAB et plus de 1 200 fonctions utilisées pour des applications allant du traitement d’image et vision par ordinateur au développement de systèmes avancés de traitement du signal et de télécommunications.

Code généré pour la multiplication matricielle.


Témoignages des utilisateurs de MATLAB Coder

Consultez les témoignages d’ingénieurs partageant leur succès avec MATLAB Coder :

  • VivaQuant a généré du code C virgule fixe à partir d’algorithmes de surveillance du rythme cardiaque et l’a compilé pour un processeur ARM®Cortex®-M.
  • Delphi a généré du code C pour un algorithme d’alignement de capteurs radar automobile et l’a compilé pour un processeur ARM10.
  • Respiri a généré du code C à partir d’algorithmes de surveillance acoustique de la respiration et l’a compilé pour une app iPhone, une app Android™ et un logiciel pour serveur basé sur le cloud.
  • DorsaVi a développé des algorithmes d’analyse de mouvement pour les applications médicales, sportives et de sécurité au travail à l’aide de MATLAB Coder.

Les capteurs ViMove de DorsaVi en test


Toolboxes et fonctions supportées

MATLAB Coder génère du code à partir d’un large éventail de fonctionnalités du langage MATLAB que les ingénieurs utilisent couramment pour développer des algorithmes en tant que composants de systèmes plus importants. Ceci inclut plus de 1 700 opérateurs et fonctions MATLAB ainsi que les toolboxes connexes.

Si votre algorithme utilise des fonctions et des fonctionnalités supplémentaires, envisagez également d’utiliser MATLAB Compiler SDK™ pour déployer l’intégralité de l’application, y compris les interfaces graphiques. (Consultez une comparaison détaillée de l’approche du déploiement par MATLAB Coder et MATLAB Compiler).

Support du langage et des toolboxes MATLAB pour la génération de code.


Prototypage sur le matériel

À l’aide de l’app MATLAB Coder (ou des fonctions en ligne de commande équivalentes), vous pouvez rapidement générer du code et le compiler pour votre hardware, quel que soit le type d’application (traitement du signal, vision par ordinateur, traitement d’images ou systèmes de contrôle). Générez du code et prototypez-le sur des plateformes embarquées telles que Raspberry Pi ou Arduino®. Sur les mobiles, intégrez le code généré dans votre propre app et exécutez-le sur des iPhones, iPads, ou Android, y compris l’accès à des capteurs embarqués tels que les caméras, les microphones et les accéléromètres. Si votre cible finale est un PC ou un portable basé sur Intel®, compilez le code généré dans une librairie statique ou dynamique autonome, ou un fichier exécutable qui peut être exécuté en dehors de l’environnement MATLAB.

Générez du code et créez un exécutable pour le prototypage sur PC.
Intégrez du code généré par MATLAB Coder™ dans une application iPhone ou iPad à l'aide de l'IDE Xcode d'Apple.

En associant MATLAB Coder avec Embedded Coder®, vous pouvez aussi passer du prototypage à la production. Générez un code qui tire profit des intrinsèques spécifiques au processeur. Ce code pourra être exécuté plus rapidement que le code C/C++ ANSI/ISO standard. Les librairies disponibles incluent les intrinsèques des plateformes ARM® Cortex®-A et Cortex®-M. Vous pouvez profiler le temps d’exécution du code autonome généré. Vérifiez le comportement numérique du code généré en réalisant des tests SIL (Software-in-the-loop) et PIL (Processor-in-the-loop). Enfin, vous pouvez mieux comprendre le code généré avec des rapports de traçabilité interactifs qui vous montrent la correspondance bidirectionnelle entre le code C généré et votre code MATLAB. Un rapport des métriques de code statique vous permet de mieux comprendre l’utilisation de la mémoire.

En utilisant MATLAB Coder avec GPU Coder™, vous pouvez prototyper sur des cartes GPU tels que NVIDIA® Tesla® et les plateformes embarquées Jetson™ en générant du code CUDA® pour le Deep Learning, la vision embarquée et les systèmes autonomes.

Cas d'usage pour MATLAB Coder

Intégration avec le logiciel

MATLAB Coder génère du code C avec des interfaces simples, et ce code est facile à intégrer. Vous pouvez intégrer le code généré sous forme de code source, librairies statiques ou dynamiques dans votre application exécutée en dehors de MATLAB sur un PC, le cloud, un mobile ou les systèmes embarqués. Utilisez des librairies spécifiques aux plateformes (telles que LAPACK pour l’algèbre linéaire et FFTW pour les transformées de Fourier rapides) pour des performances optimales. Ou vous pouvez générer un code source pur pour une meilleure lisibilité et portabilité.

Intégrez du code généré par MATLAB Coder dans un projet parent Microsoft Visual Studio.
Intégrez du code généré par MATLAB Coder™ dans une application iPhone ou iPad à l'aide de l'IDE Xcode d'Apple.

Le code généré utilise des types C de manière naturelle, fournissant une interface facile à intégrer avec le code externe. Pour les structures, les tableaux à taille fixe et tous les types de données numériques, le code généré utilise directement les types C correspondants. Les types de données avancés comme les tableaux et les objets à taille variable produisent des types C plus riches et des fonctions utilitaires afin de faciliter leur utilisation. Un exemple de fonction principale est généré pour vous montrer comment invoquer le code généré. Vous pouvez choisir de générer des tables en lignes ou colonnes en fonction des besoins de votre environnement logiciel. Pour une intégration avec les librairies de traitement d’images externes (comme OpenCV) sans copies ou transposées, vous pouvez sélectionner le type de tableau « row-major ».

Si vous disposez de librairies ou de composants C existants, vous pouvez les importer dans MATLAB pour réaliser des tests plus complets dans l’environnement MATLAB en utilisant la génération de fonctions MEX. Ensuite, vous pouvez utiliser coder.ceval pour invoquer ces composants à partir de votre code généré.

Exécutez des tests unitaires dans MATLAB sur votre code C écrit manuellement et vérifiez si les modifications apportées à votre code C produisent un échec des tests unitaires. Utilisez la visualisation et les autres outils de MATLAB pour comprendre le comportement de votre code.

En utilisant MATLAB Coder et Embedded Coder, vous pouvez contrôler l’apparence du code généré. Suivez les règles de codage de votre entreprise avec des directives #define et des entêtes de fichiers et de fonction personnalisées. Si vous avez besoin d’un code conforme à MISRA, une interface unique vous permet de personnaliser la génération de code pour maximiser la conformité. Utilisez le rapport de traçabilité interactif pour obtenir des informations sur la manière dont votre code MATLAB correspond au code C généré.

Le rapport de traçabilité interactif en utilisant MATLAB Coder et Embedded Coder.


Optimiser les performances du code généré

MATLAB Coder applique automatiquement des optimisations à votre code pour vous offrir les meilleurs résultats, mais vous donne également la possibilité d’ajuster les compromis entre vitesse d’exécution, utilisation de la mémoire, lisibilité et portabilité. Des outils de profilage sont disponibles pour vous aider à comprendre les performances du code et identifier les parties problématiques.

Pour une accélération supplémentaire, vous pouvez exploiter des librairies tierces. Par exemple, vous pouvez éventuellement générer du code qui invoque des librairies optimisées comme LAPACK et FFTW si ces librairies sont disponibles dans votre environnement cible. Vous pouvez écrire manuellement le code C pour les parties essentielles de votre algorithme, en laissant MATLAB Coder générer le reste.

Générez du code multicœurs à partir de boucles parfor et compilez-le à l’aide d’un compilateur qui supporte l’interface de l’application OpenMP. Pour le parallélisme distribué, vous pouvez utiliser Parallel Computing Toolbox™.

En utilisant MATLAB Coder avec Embedded Coder, vous pouvez optimiser le code généré en invoquant les fonctions intrinsèques spécifiques au processeur qui s’exécutent plus rapidement sur ce processeur. Les librairies disponibles incluent les plateformes ARM® Cortex-A et Cortex-M.

 

Exemple de code généré contenant des invocations à OpenMP.


Réutiliser les tests MATLAB sur le code généré avant l’intégration

Utilisez vos tests MATLAB existants pour vérifier le comportement du code généré avant de l’intégrer à votre application. L’évaluation des résultats est facile dans l’environnement interactif MATLAB. Vous pouvez rapidement développer un riche ensemble de tests de régression à l’aide d’une structure de tests unitaires MATLAB. MATLAB Coder comprend les tests unitaires MATLAB instrumentés et peut les utiliser pour vérifier le code C généré. L’instrumentation permet un diagnostic clair et répétable pour identifier les erreurs d’exécution, et empêcher un code incorrect de venir perturber MATLAB.

Utilisez la structure de test unitaire MATLAB pour vérifier si les modifications apportées à votre code MATLAB entraînent l’échec des tests unitaires dans le code C généré par MATLAB Coder.

En utilisant MATLAB Coder avec Embedded Coder, vous pouvez vérifier le comportement numérique du code final généré sur les plateformes hôte et cible en exécutant des tests SIL et PIL.

 

Vérification du comportement du code généré avant l’intégration à votre application.


Accélération des algorithmes

Dans le cadre d’une stratégie globale d'accélération de vos algorithmes MATLAB, vous pouvez générer un code C avec MATLAB Coder et le packager afin de pouvoir l’invoquer comme vous le feriez pour une fonction MATLAB normale (en tant que fonction MEX).

Générez un fichier MEX pour accélérer la simulation d'un algorithme de compression ou décompression d'image basé sur la transformée en cosinus discrète (TCD).

L’accélération observée dépendra de la nature de votre code MATLAB. Généralement, les routines numériques optimisées et le code hautement vectorisé dans MATLAB ne peuvent pas être accélérés par la génération de code. Les effets positifs se font principalement ressentir sur le code contenant des boucles, des structures et des types virgule fixe. Le code contenant des boucles parfor s’exécute sur plusieurs cœurs si votre compilateur C supporte la norme OpenMP. Vous pouvez profiler le temps d’exécution de la fonction MEX générée pour identifier les parties problématiques et concentrer vos efforts d’optimisation.

Pour certaines applications, vous pouvez combiner plusieurs techniques d’accélération, telles que l’utilisation de la vectorisation et de la pré-allocation, les System objects™ et Parallel Computing Toolbox avec la génération de fonctions MEX.

En utilisant MATLAB Coder avec GPU Coder, vous pouvez améliorer la vitesse d’exécution en exécutant les parties parallèlisables de votre algorithme sur GPU.

Enfin, si vous déployez une application autonome à l’aide de MATLAB Compiler ou MATLAB Compiler SDK, vous pouvez accélérer les performances de l’application déployée en remplaçant les composants critiques par des fonctions MEX générées par MATLAB Coder.

Dans ce webinar, vous apprendrez à utiliser les différentes techniques pour accélérer la simulation de vos systèmes de télécommunications dans MATLAB et Simulink.