L'œil sur...

La famille des outils Matlab évolue avec la nouvelle version R2021a 

 

Des centaines de nouvelles fonctionnalités, de nouveaux outils ou des mises à jour sont disponibles avec la sortie de Matlab R2021a. Nous avons assisté les 4 et 5 mai aux journées Matlab Expo où plus de 70 experts techniques sont intervenus. Nous avons souhaité vous éviter les centaines de release notes ! Chaque semaine de juillet à août, un ingénieur d’Acsystème vous partage une fonctionnalité marquante de Matlab qui améliore son quotidien. Ouvrez Matlab ! 

 

Liste des articles : 

  1. L'outil Create Plot
  2. L'App Designer
  3. Nouveautés Stateflow
  4. Reference Model avec Simulink
  5. à venir ...

 

 

S01E01 : Create Plot dans le Live Editor, par Maxime BONNET

Depuis la version Matlab R2021a, l’interface Create Plot est disponible à partir du Live Editor. Cette interface permet de créer rapidement, à partir de données chargées dans le workspace Matlab, des graphes propres (avec titres, légendes…). L’outil propose également de récupérer les lignes de codes correspondantes. 

Pour ouvrir l’interface, il y a plusieurs méthodes possibles : 

  • ouvrir un nouveau Live Script puis aller dans le menu Insert et dans la section Code, sélectionner Task > Create Plot

  • dans l’éditeur de code du Live Script, taper un mot clé tel que create, vis ou visualize : la commande Create Plot sera alors suggérée,

  • dans l’éditeur de code du Live Script, taper n’importe quel nom de fonction de création de graphe (plot, bar, contour…) : la commande Create Plot sera alors suggérée, en ayant prédéfini le type de graphe correspondant. 

 
      
 

Pour utiliser l’interface, il est nécessaire d’avoir des données chargées dans le workspace de Matlab. Celle-ci permet alors de sélectionner les données à mettre en abscisse et en ordonnée, et de tester plusieurs types de graphes et d’options de visualisations.On observe alors directement le résultat, sans avoir à écrire une seule ligne de code. Les titres, labels et légendes sont affichés automatiquement selon les noms de variables du workspace.

L’outil offre la possibilité de les personnaliser de façon interactive sur la figure de prévisualisation, et de mettre à jour automatiquement le code Matlab de création de cette figure. Les lignes de code générées sont disponibles, vous permettant de générer cette même figure ultérieurement. 

Au quotidien, cette interface est particulièrement adaptée pour réaliser des graphes rapides, qui n’ont pas besoin de fonctionnalités trop avancées (l’interface ne permet pas de réaliser tout ce qui existe avec les lignes de commande). La création de graphiques devient intuitive, sans question à se poser sur les lignes de code à écrire. Finalement, on gagne du temps dans la création de graphique, en conservant la qualité ! 

△ Haut de page

 

S01E02 : l'App Designer pour créer des interfaces graphiques, par Arthur ROUÉ

Avec la version R2016a, Mathworks introduit l’App Designer pour assister le développeur dans sa création d’interface graphique. Il est conçu pour permettre aux utilisateurs Matlab de réaliser rapidement et facilement des interfaces professionnelles par simple glisser-déposer. À terme, ce nouvel outil a vocation à remplacer son prédécesseur : GUIDE.
 
Depuis son arrivée, l’App Designer a été enrichi de nombreuses fonctionnalités et composants, tels que le positionnement des composants dans une grille (uigridlayout), la compilation en Web App, la personnalisation du style des tables (uitable / uistyle), la possibilité d’insérer des liens hypertextes (uihyperlink)...
 
Dans cet article, on présentera deux fonctionnalités qui ont été intégrées à l’App Designer :
  • l’ajout d’une barre de menus (R2017b),
  • la création de menus contextuels associés aux composants graphiques (R2020a).

La barre de menus, absente au lancement de cet environnement de conception d’interfaces, a finalement été réimplémentée pour les composants uifigure. Ci-dessous un exemple simple de création d’un menu dont la fonction callback ferme la fenêtre de l’application :

 

    
 
A partir de la R2020a, la barre d’outils a elle aussi rendu compatible avec les uifigure et s’utilise de la même façon que dans l’exemple précédent.
 
Les menus contextuels font aussi leur entrée dans la version R2020a. Outil ergonomique très puissant, le menu contextuel peut être utilisé sur la plupart des composants graphiques. Un clic-droit sur l’objet, suivi de la sélection du menu déclenche la fonction callback associée au menu. Ci-dessous un exemple de menu contextuel qui permet l’export du contenu d’un axe dans un fichier PNG :
 
  
 
Documentation Mathworks des propriétés des composants présentés

Le code utilisé pour les illustrations est disponible ci-dessous :

	% Callbacks that handle component events
methods (Access = private) 
	% Code that executes after component creation
    function tracer(app)
        % Afficher sinus et cosinus
        x  = 0:0.1:2*pi;
        y1 = cos(x);
        y2 = sin(x);
        plot(app.UIAxes, x, y1, 'b', x, y2, 'r-.', 'LineWidth', 2)
    end

    % Menu selected function: QuitterMenu
    function quitter(app, event)
        close(app.UIFigure);
    end

    % Menu selected function: ExporterenPNGMenu
    function exporter(app, event)
        [file, path] = uiputfile('*.png');
        exportgraphics(app.UIAxes, fullfile(path, file));
    end
end

△ Haut de page

 

S01E03 : Les nouveautés Stateflow vous simplifient le quotidien, par Mathias AMADO CATTANEO

Ces dernières années, Mathworks a mené de nombreuses actions pour faciliter le codage sous Simulink. L'apparition de la possibilité d'insertion rapide ("quick insert"), permet notamment de rapidement intégrer un nouveau bloc, ou de créer un sous-système, dans un code Simulink. Et Stateflow alors ?
 
Maintenant que ces évolutions sont testées et approuvées par les utilisateurs de Simulink, elles font désormais leurs apparitions dans l’environnement Stateflow. Avec la version R2021a, Mathworks permet à l'utilisateur de modéliser avec plus de facilité des machines à états et des diagrammes de flux. L'outil d'insertion rapide permet d'ajouter directement un composant Stateflow, simplement en tapant son nom (state, subchart, Simulink state…).
 
  
 
Dans cette veine de simplifier le codage sous Stateflow, une petite option bien pratique fait son apparition. L'inversion en 1 clic du sens d'une transition. Fini les prises de têtes lors de la modélisation d'une logique complexe, ou lors de la modification d'un diagramme existant.
 
    
 
Une autre évolution ayant pour optique la facilité de lecture et de compréhension, et similaire aux zones de couleurs dans Simulink, est la personnalisation visuelle des différents paramètres (constantes, entrées, sorties, paramètres…). Vous n’avez plus aucune raison de garder ses diagrammes monochromes, faites place aux couleurs !
 
    
△ Haut de page
 
 

S01E04 : Réduisez vos temps de simulation Simulink avec le "Reference Model", par Marouane BENAZIZ

Vous êtes un utilisateur de Simulink et vous trouvez que vos temps de simulation sont trop longs ? Avez-vous pensé à passer une partie de votre modèle en modèle référencé ? C’est ce que nous avons fait pour un de nos clients pour lequel nous développons une plateforme de validation des algorithmes de contrôle de véhicule hybride. La validation de ce type de systèmes est coûteuse en temps de calculs car elle nécessite de simuler plusieurs scénarios pour différentes configurations de véhicule, ce qui peut durer plusieurs heures voire plusieurs jours. Voici une solution !

Qu’est-ce que le modèle référencé ?

Le modèle référencé (« Model Reference ») est un bloc Simulink qui permet de référencer un modèle dans un autre. Dans notre cas, on référence le modèle contenant l’algorithme de contrôle (bloc « Contrôle » ci-dessous) dans un modèle dit « parent » qui est la plateforme de simulation.

      

Lorsque le modèle référencé est utilisé en mode « Accelerator », il est compilé une première fois et est ensuite réutilisé pour toutes les simulations suivantes. Tant que le bloc « Contrôle » n’est pas modifié, il n’y aura pas besoin de le recompiler.


Comment convertir un sous-système en modèle référencé ?

La conversion du sous-système (subsystem) en modèle référencé nécessite quelques étapes de préparation du modèle afin qu’il respecte certaines règles. En particulier, nous avons :

  • défini les bus d’entrée et de sortie du modèle référencé,
  • résolu les signaux qui passaient directement à travers le bloc « Contrôle » en utilisant des blocs « Signal Conversion »,
  • géré le comportement des « trigger ports » présents dans le modèle référencé,
  • résolu les boucles algébriques de la plateforme, suite au passage du bloc « Contrôle » en modèle atomique.

Les règles à respecter pour la conversion sont définies dans la page suivante : Convert Subsystems to Referenced Models - MATLAB & Simulink (mathworks.com)

Une fois que le modèle référencé est prêt, nous avons écrit un script qui permet de compiler le modèle avec mingw64, puis de compresser les fichiers dans une archive « .zip ». Cela permet de stocker et d’échanger proprement les fichiers du modèle référencé compilé.

Enfin, nous avons lancé des simulations de validation afin de garantir la stricte égalité des résultats de simulation avant et après la conversion et d’évaluer le gain de temps de simulation obtenu.


Quels sont les bénéfices obtenus ?

Voici les résultats grâce au « Reference Model » : 

  • le temps de simulation est divisé par 3 : une simulation dure parfois plusieurs heures, ce gain de temps est donc très appréciable, 
  • le temps perdu pour compiler le bloc « Contrôle » est largement compensé par le temps gagné lors des simulations,
  • la plateforme est plus légère à manipuler et s’ouvre plus rapidement : le modèle référencé n’est chargé que lorsque cela est nécessaire,
  • cette technique permet une approche modulaire : il est aisé de changer de versions d’algorithme de contrôle en modifiant simplement la référence du bloc « Model Reference »,
  • la possibilité de protéger l’algorithme de contrôle avec Simulink Coder est pertinente : elle permet de ne pas révéler sa propriété intellectuelle.

Nous appliquons la technique du modèle référencé sur d’autres applications et notamment pour la validation d’algorithmes de contrôle pour les systèmes ADAS. 

Pour avoir plus d’informations sur les détails techniques et les subtilités des modèles référencés, vous pouvez nous contacter et consulter la page Mathworks dédiée à ce sujet Model References - MATLAB & Simulink (mathworks.com).

△ Haut de page