Conversion d’un code MATLAB en diagrammes de flux Stateflow
Pour transformer votre code MATLAB® en diagrammes de flux Stateflow® et en fonctions graphiques, utilisez le Pattern Wizard. Parmi les modèles de conversion pris en charge, citons :
if,if-elseet autres énoncés de décision imbriqués.Boucles
foretwhile.Instructions
switch.
Le Pattern Wizard peut convertir des fonctions et scripts MATLAB.
Les fonctions MATLAB sont converties en fonctions graphiques Stateflow.
Les scripts MATLAB sont convertis en diagrammes de flux Stateflow.
La conversion de code MATLAB n’est prise en charge que dans les diagrammes Stateflow autonomes. Pour plus d’informations, veuillez consulter Create Stateflow Charts for Execution as MATLAB Objects.
Création de diagrammes de flux à partir de scripts MATLAB
Ce script MATLAB vérifie de manière empirique une instance de la conjecture de Syracuse (ou Collatz). Avec l’entrée numérique u, le script calcule la séquence de Hailstone n0 = u, n1, n2, n3, ⋯ en itérant cette règle :
Si ni est pair, alors ni+1 = ni/2.
Si ni est impair, alors ni+1 = 3ni + 1.
Selon la conjecture de Syracuse (ou Collatz), tout nombre entier positif possède une séquence de Hailstone qui finit par atteindre le chiffre 1.
% Hailstone sequence u, c(u), c(c(u)),... y = u; while y(end) ~= 1 y(end+1) = c(y(end)); end disp(y); function n = c(n) % Compute next number in hailstone sequence. % If n is even, then c(n) = n/2. % If n is odd, then c(n) = 3*n+1. if rem(n,2) == 0 n = n/2; else n = 3*n+1; end end
while qui appelle de manière répétée la fonction auxiliaire c jusqu'à ce qu'elle produise une valeur de sortie de 1. La fonction c consiste en une instruction conditionnelle if-else dont la sortie dépend de la parité de l'entrée.Pour convertir ce script en un diagramme de flux et une fonction graphique :
Ouvrez un nouveau diagramme autonome.
edit hailstone.sfxDans l’onglet State Chart, sélectionnez Pattern > Select File.
Dans la boîte de dialogue, choisissez le script MATLAB et cliquez sur Open. Le Pattern Wizard ajoute un diagramme de flux et une fonction graphique à votre diagramme Stateflow. Double-cliquez sur la fonction graphique pour en consulter le contenu.

Dans le volet Symbols, cliquez sur Resolve Undefined Symbols
. L’éditeur Stateflow résout uetyen tant que données locales.Enregistrez votre diagramme.
Pour exécuter le diagramme à partir de l’éditeur Stateflow, dans le volet Symbols, saisissez une valeur de
u= 9 et cliquez sur Run
. Pendant l’exécution du diagramme de flux, l’éditeur Stateflow met en évidence les transitions actives par une animation du diagramme. Lorsque l’exécution s’arrête, la fenêtre de commande MATLAB affiche la séquence de Hailstone, commençant par la valeur 9 :9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Cliquez sur Stop
.
Vous pouvez copier les diagrammes de flux et fonctions graphiques générés, et les coller dans d'autres diagrammes, y compris des diagrammes Stateflow dans des modèles Simulink®. Si votre code MATLAB utilise une fonctionnalité qui est restreinte pour la génération de code dans Simulink, vous devez modifier les actions du diagramme de flux avant de simuler le diagramme. Pour plus d’informations, veuillez consulter Call Extrinsic MATLAB Functions in Stateflow Charts.
Remarque
Supposons que vous utilisiez nargin dans une fonction MATLAB que vous convertissez en fonction graphique dans un diagramme. Étant donné que nargin compte l'objet diagramme comme un argument d'entrée de la fonction graphique, la valeur de nargin dans la fonction graphique est égale à 1 plus la valeur de nargin dans la fonction MATLAB d’origine. Pour plus d’informations, veuillez consulter Execute a Standalone Chart.