MATLAB Coder

Générer du code C et C++ à partir de code MATLAB

 

MATLAB Coder™ génère du code C et C++ à partir du MATLAB® pour une variété de plateformes hardware, des PC jusqu'aux systèmes embarqués. Il supporte la plupart du langage MATLAB ainsi qu'un grand nombre de toolboxes. Vous pouvez intégrer le code généré dans vos projets sous forme de code source et de librairies statiques ou dynamiques. Le code généré est lisible et portable. Vous pouvez le combiner avec les composants clés de votre code C et C++ existant ou de vos librairies. Vous pouvez également packager le code généré sous forme de fonction MEX pour l'utiliser dans l'environnement MATLAB.

Utilisé avec Embedded Coder®, MATLAB Coder vous permet de personnaliser et d’assurer la traçabilité du code, de l’optimiser pour une cible spécifique et de le vérifier par des tests SIL (software-in-the-loop) et PIL (processor-in-the-loop).

Pour déployer des programmes MATLAB sous forme d'applications autonomes, utilisez MATLAB Compiler™. Pour générer des composants logiciels destinés à une intégration avec d'autres langages de programmation, utilisez MATLAB Compiler SDK™.

En savoir plus :

Exécuter sur toute cible

Générez du code source C/C++ ANSI lisible et portable. Déployez du code libre de droits.

Déployer des algorithmes libres de droits

Utilisez n'importe quel compilateur C/C++ pour compiler et exécuter votre code généré sur n'importe quelle cible, depuis les PC, smartphones et tablettes, jusqu'au hardware embarqué. Le code généré est libre de droits, vous pouvez donc le déployer gratuitement dans des applications commerciales pour vos clients.

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

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 pour développer des algorithmes en tant que composants de systèmes plus importants. Ceci inclut plus de 2500 opérateurs et fonctions MATLAB ainsi que les toolboxes connexes.

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

Déployer du code C++ depuis MATLAB

Intégrez le code généré à du code source C++ orienté objet.

Générer du code C++ avec des namespaces

MATLAB Coder peut générer du code C++ dans un namespace, ce qui facilite l'intégration avec d'autres codes sources contenant des noms de fonctions ou types de données identiques. Le générateur de code regroupe toutes les fonctions générées et les définitions de types dans le namespace.

Code généré intégrant des variables avec des noms de types de données identiques en utilisant des namespaces.

Générer des classes C++ à partir de classes MATLAB

MATLAB Coder génère des classes C++ à partir des classes de votre code MATLAB, notamment des classes de type value, de type handle et des system objects. Le code généré peut être compilé dans des bibliothèques C++ ou des exécutables et intégré dans votre code source C++ existant.

Code C++ généré avec une interface de classe.

Utiliser des structures C++ allouées dynamiquement dans les interfaces de fonctions générées

Générez du code C++ pour les fonctions MATLAB qui acceptent ou renvoient une structure dont la taille est inconnue au moment de la compilation, ou dont la limite dépasse un seuil prédéfini. Dans le code généré, l'allocation de mémoire pour la structure se fait de manière dynamique et sous la forme d'un modèle de classe nommé coder::array. En complément de la désallocation de mémoire avec traitement des exceptions, coder::array propose des API permettant d'accéder à la structure dynamique et de la gérer.

Passez des structures allouées dynamiquement aux fonctions générées.

Déployer des réseaux de Deep Learning

Générez du code à partir de réseaux de Deep Learning entraînés.

Déployer des algorithmes de Deep Learning de bout en bout

Déployez de nombreux réseaux de Deep Learning entraînés (ResNet-50, MobileNet-v2, LSTM et autres couches) à partir de Deep Learning Toolbox™ sur des processeurs Intel® et ARM® Cortex®. Générez le code du pré- et du post-traitement et de vos réseaux de Deep Learning afin de déployer des algorithmes complets.

Générer du code optimisé pour l'inférence

L'exécution du code généré est plus rapide et utilise moins de mémoire que les autres solutions de Deep Learning, car MATLAB Coder ne génère que le code nécessaire pour exécuter l'inférence avec votre algorithme spécifique. Le code généré appelle des bibliothèques optimisées, notamment Intel MKL-DNN pour les processeurs Intel et ARM Compute Library pour les processeurs ARM Cortex. Utilisez GPU Coder™ pour générer du code CUDA® pour accélérer ou déployer les algorithmes, exécutable sur tout GPU NVIDIA® moderne.

Prototyper sur du hardware

Implémentez votre algorithme rapidement sur du hardware grâce à la conversion automatique en code C/C++.

Prototyper sur plateformes PC et cloud

Utilisez l'application MATLAB Coder ou des fonctions en ligne de commande équivalentes pour générer rapidement du code et le compiler pour votre hardware, quel que soit le type d'application : traitement du signal, Computer Vision, Deep Learning, systèmes de contrôle, etc.

Prototypage rapide d'algorithmes sur plateformes PC et cloud.

Prototyper sur plateformes embarquées et mobiles

Ciblez n'importe quel dispositif en intégrant manuellement le code généré à votre application. Automatisez le processus pour Raspberry Pi à l'aide du Support Package MATLAB pour Raspberry Pi.

Prototypage rapide d'algorithmes sur plateformes embarquées et mobiles.

Du prototypage à la production

Utilisez MATLAB Coder avec Embedded Coder pour générer du code utilisant les intrinsèques propres au processeur et s'exécutant plus rapidement que du code C/C++ ANSI/ISO standard.

Profiler le temps d'exécution du code autonome généré.

Intégration logicielle

Réutilisez les algorithmes MATLAB sous forme de code C/C++ dans votre environnement logiciel.

Générer du code avec des interfaces simples, faciles à intégrer

Le code généré utilise des types C/C++ de manière naturelle, facilitant l’intégration avec du code externe. Vous pouvez intégrer le code généré sous forme de code source ou de bibliothèques. Pour des tests plus complets, vous pouvez importer des bibliothèques ou des composants C/C+ fiables dans MATLAB qui seront automatiquement appelés à partir du code généré.

Rapport de traçabilité interactif avec MATLAB Coder et Embedded Coder.

Optimiser les performances du code généré

Appliquez des optimisations pour trouver le meilleur compromis entre vitesse d'exécution, utilisation de la mémoire, lisibilité et portabilité. Utilisez des outils de profilage pour identifier les goulots d'étranglement. Pour doper encore les performances, générez du code OpenMP multicœurs et appelez des bibliothèques optimisées telles que LAPACK, BLAS ou encore FFTW le cas échéant.

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

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

Réutilisez vos tests MATLAB existants pour vérifier le comportement du code généré dans l'environnement MATLAB interactif. Mettez à profit l'environnement de tests unitaires MATLAB Unit Test Framework pour développer rapidement un vaste jeu de tests de régression utilisables pour vérifier le code C/C++ généré.

Vérifier le comportement du code généré avant l'intégration à votre application.

Accélérer les algorithmes

Générez du code C/C++ et compilez-le pour l'utiliser dans MATLAB.

Accélérer les algorithmes sur CPU

Vous pouvez appeler le code généré sous forme de fonctions MEX à partir de votre code MATLAB pour accélérer son exécution. L'accélération observée dépendra de la nature de votre code MATLAB. Vous pouvez profiler les fonctions MEX générées pour identifier les goulots d'étranglement et ainsi cibler vos efforts d'optimisation.

Profiler des fonctions MEX pour identifier les goulots d'étranglement affectant les performances.

Accélérer les algorithmes avec des GPU

Utilisez Parallel Computing Toolbox™ pour accélérer les algorithmes exécutés dans MATLAB. Utilisez GPU Coder pour générer du code CUDA pour l'accélération ou le déploiement, exécutable sur tout GPU NVIDIA moderne.

Nouveautés

Code C++

Générez des classes C++ à partir de classes MATLAB

Code C++

Utilisez des structures C++ allouées dynamiquement dans les interfaces de fonctions générées

Éditeur de type du Coder

Créez et modifiez des types d'entrée de manière interactive

Fonctions FFT plus rapides

Performance améliorée du code généré pour la transformée de Fourier rapide (FFT)

Datetime et Timetables

Génération de code pour les tableaux datetime et les timetables

Génération de code pour Optimization Toolbox

Générez du code C pour les problèmes avec des contraintes linéaires et des fonctions objectif quadratiques avec quadprog

Réseaux LSTM (Long Short-Term Memory)

Générez du code pour des réseaux récurrents comme les LSTM.

Réseaux de Deep Learning

Générez du code pour DenseNet-201 et Xception

Consultez les notes de version pour en savoir plus sur ces fonctionnalités et les fonctions correspondantes.

Panel Navigation

Générer du code C depuis MATLAB

Découvrez plusieurs conseils et bonnes pratiques pour utiliser MATLAB Coder. Lisez des témoignages d’entreprises telles que Delphi, Baker Hughes, iSonea et dorsaVi – qui ont réussi à créer des applications performantes grâce au code généré.