Principales fonctionnalités

Grâce à MATLAB Coder™, vous pouvez intégrer le code généré dans vos projets en tant que code source, bibliothèque statique ou bibliothèque dynamique. Un exemple de fonction main est fourni comme modèle afin de vous aider à intégrer le code généré dans votre application. Vous pouvez également intégrer du code externe avec du code MATLAB destiné à la génération de code. Le code externe peut correspondre à des bibliothèques externes, des fichiers objets ou du code source C ou C++.

Intégrez du code généré par MATLAB ®  Coder™ dans un projet parent Microsoft ® Visual Studio ® .

En associant MATLAB Coder avec Embedded Coder®, vous pouvez optimiser l'efficacité de votre code et personnaliser le code généré. Vous pouvez ensuite vérifier 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).

MATLAB Coder fonctionne avec Simulink Coder™ pour générer du code C depuis les modèles Simulink® qui contiennent du code MATLAB.

Vous pouvez également intégrer vos programmes MATLAB (y compris les éléments graphiques) à des applications personnalisées écrites en C/C++, .NET, Java® et Python®, puis les déployer sur le bureau, le Web ou des systèmes d'entreprise grâce à MATLAB Compiler SDK™. MATLAB Central fournit une comparaison détaillée de l'utilisation de ces approches.

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

Langage MATLAB et prise en charge des boîtes à outils pour la génération de code

MATLAB Coder génère le code à partir d'un large éventail de fonctionnalités du langage MATLAB que les ingénieurs de conception utilisent normalement pour développer des algorithmes en tant que composants de systèmes plus importants. Ceci inclut plus de 1 200 opérateurs et fonctions MATLAB ainsi que des boîtes à outils connexes, y compris :


Cas d'usage pour MATLAB Coder

MATLAB Coder permet aux ingénieurs qui développent des algorithmes dans MATLAB de générer du code C/C++ lisible et portable. Avec ce code généré, vous pouvez :

  • Intégrer vos algorithmes MATLAB en tant que composant de bibliothèque compilé dans un autre logiciel tel qu'un simulateur personnalisé
  • Accélérer les portions de votre code MATLAB qui exigent des calculs intensifs en générant un exécutable MATLAB (fonction MEX) qui invoque le code C/C++ compilé
  • Prototyper vos algorithmes MATLAB sous forme d'exécutables autonomes sur PC et partager le code généré sous forme de spécifications de conception avec vos ingénieurs logiciel
  • Implémenter et vérifier vos algorithmes MATLAB sur un processeur embarqué
Intégrez du code généré par MATLAB ®  Coder™ dans un projet parent Microsoft ® Visual Studio ® .
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).
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.
Cas d'usage pour MATLAB Coder

Génération de code à partir de MATLAB

La conversion d'algorithmes MATLAB en code C implique la spécification des exigences d'implémentation. L'application MATLAB Coder et les fonctions équivalentes en ligne de commande vous guident dans ce processus itératif et vous permettent de ne jamais quitter le langage MATLAB.

MATLAB Coder vous aide à préparer votre algorithme MATLAB pour la génération de code en analysant votre code MATLAB et en vous proposant le type et la taille de vos entrées. Vous pouvez vous assurer que votre algorithme est prêt pour la génération du code en générant une fonction MEX qui encapsule le code compilé pour l'exécuter dans MATLAB. MATLAB Coder génère un rapport identifiant les erreurs à corriger afin d'assurer que votre algorithme MATLAB est prêt pour la génération du code. Vous effectuez des itérations entre la correction des erreurs et la régénération d'une fonction MEX jusqu'à ce que votre algorithme MATLAB soit adapté à la génération du code.

Vous pouvez ensuite générer du code source C ou C++ ou une fonction MEX adaptée à vos exigences de performances à partir de votre algorithme MATLAB.

Voir la gallerie (4 images)


Génération d'une fonction MEX pour la vérification et l'accélération du code

La fonction MEX peut être invoquée à la place du code MATLAB d'origine pour :

  • Tester et vérifier le code compilé dans MATLAB
  • Accélérer l'exécution

Dans le cadre du flot de travail itératif en trois étapes, générer et tester la fonction MEX afin de vérifier qu'elle contient la même fonctionnalité que le code MATLAB d'origine.

Tester la fonction MEX avant de générer le code vous permet de détecter et corriger les erreurs d'exécution qui sont beaucoup plus difficiles à diagnostiquer dans le code généré. Lancer votre fonction MEX dans MATLAB vous permet d'exécuter des vérifications d'intégrité de la mémoire afin de vérifier les limites des tableaux et les dimensions et de détecter les violations de l'intégrité de la mémoire dans le code généré pour les fonctions MATLAB. En cas de détection d'une violation, MATLAB interrompt l'exécution et affiche un message de diagnostic.

L'application MATLAB Coder réalise le test en utilisant les mêmes entrées que celles utilisées pour exécuter le code MATLAB d'origine et en comparant les résultats obtenus avec le code MATLAB d'origine et ceux de la fonction MEX.

Voir la gallerie (2 images)


Accélération de l'exécution des algorithmes MATLAB

Dans le cadre d'une stratégie générale visant à accélérer votre algorithme MATLAB, générer une fonction MEX pour remplacer votre code MATLAB d'origine peut augmenter la vitesse d'exécution.

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).

Le facteur d’accélération atteint dépend de la nature de l'algorithme. La meilleure façon de déterminer l'accélération consiste à suivre les bonnes pratiques, générer une fonction MEX à l'aide de MATLAB Coder et tester directement l'accélération. Vous constaterez probablement une accélération si votre algorithme contient les éléments suivants :

  • Types de données en simple précision
  • Types de données en virgule fixe
  • Boucles avec états
  • Code impossible à vectoriser

D'autre part, les accélérations sont moins fréquentes si votre algorithme contient des calculs MATLAB implicitement multithreadés tels que fft et SVD, des fonctions qui invoquent des bibliothèques IPP ou BLAS, des fonctions optimisées pour l'exécution dans MATLAB sur PC telles que les FFT, ou des algorithmes pour lesquels le code peut être vectorisé.

Pour certaines applications, vous pouvez également combiner différentes techniques telles que l'utilisation de la vectorisation et de la pré-allocation, de System objects™ et de la Parallel Computing Toolbox™ avec une génération de fonction MEX de façon à bénéficier de processeurs multi-cœurs et à accélérer votre algorithme MATLAB.

In this webinar you will learn how to use to various techniques to accelerate your communications system simulations in MATLAB and Simulink.

Génération de code compatible multi-cœurs à l'aide d'OpenMP

MATLAB Coder peut générer du code compatible multi-cœurs à partir de boucles parfor-. Une boucle parfor, comme la boucle standard de MATLAB for, exécute une série d'opérations sur une plage de valeurs. Les itérations de la boucle parforfonctionnent en parallèle sur plusieurs cœurs, c'est pourquoi une itération de votre boucle ne doit pas dépendre des autres itérations. Si MATLAB Coder détermine que cette spécification n'est pas respectée, il traitera les boucles parforcomme les boucles forstandard.

MATLAB Coder utilise l'interface de programmation multi-cœurs Open Multiprocessing (OpenMP) pour prendre en charge la génération de code multi-cœur à mémoire partagée depuis le code MATLAB écrit à l'aide de boucles parfor. Le code généré requiert un compilateur prenant en charge l'interface de programmation OpenMP. MATLAB Coder utilise tous les cœurs disponibles, mais vous pouvez spécifier le nombre de threads à utiliser. Pour obtenir un parallélisme distribué, utilisez la Parallel Computing Toolbox.

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