Main Content

Implémenter des fonctions MATLAB dans Simulink avec des blocs MATLAB Function

Les blocs MATLAB Function vous permettent de définir des fonctions personnalisées dans des modèles Simulink® en utilisant le langage MATLAB®. Utilisez ces blocs dans les cas suivants :

  • Vous disposez d'une fonction MATLAB existante qui modélise les fonctionnalités personnalisées, ou bien vous pouvez facilement créer une telle fonction.

  • Votre modèle nécessite une fonctionnalité personnalisée qui n'est pas ou ne peut pas être capturée dans le langage graphique Simulink.

  • Il est plus facile de modéliser une fonctionnalité personnalisée en utilisant une fonction MATLAB qu'en utilisant un schéma bloc Simulink.

  • La fonctionnalité personnalisée que vous souhaitez modéliser ne comprend pas d'états dynamiques continus ou discrets. Pour modéliser des états dynamiques, utilisez des S-functions. Consultez la rubrique Créer des blocs avec les fonctions S-functions MATLAB.

Calculer la moyenne et l'écart-type avec un bloc MATLAB Function

Sur la base d’un modèle qui comprend un bloc MATLAB Function, cet exemple vous explique comment personnaliser le bloc afin de calculer la moyenne et l'écart-type d'un vecteur de valeurs.

Ouvrir le modèle

Le modèle call_stats_block1 comprend un bloc MATLAB Function vide et les blocs dont vous avez besoin pour l'exemple. Ouvrez le modèle.

Programmer le bloc MATLAB Function

Programmez le bloc pour qu'il calcule la moyenne et l'écart-type d'un vecteur de valeurs.

  1. Pour ouvrir MATLAB Function Block Editor, double-cliquez sur le bloc MATLAB Function. Une fonction par défaut apparaît dans MATLAB Function Block Editor avec deux variables : un argument d'entrée et un argument de sortie.

    This image shows the MATLAB Function Block Editor after it has been opened from the call_stats_block1 model. It includes a default function.

  2. Définissez les entrées et les sorties de la fonction en modifiant l’instruction de la fonction :

    function [mean, stdev] = stats(vals)
    

    Cette instruction définit une fonction du nom de stats avec trois variables. L'instruction définit un argument d'entrée, vals, et deux arguments de sortie, mean et stdev.

  3. Sur une nouvelle ligne, après l’instruction de la fonction, effacez le code existant et ajoutez le code suivant :

    % Calculates a statistical mean and a standard
    % deviation for the values in vals.
    
    len = length(vals);
    mean = avg(vals,len);
    stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len);
    plot(vals,"-+");
    
    function mean = avg(array,size)
    mean = sum(array)/size;
    

    Le code final se présente de la manière suivante :

    The MATLAB Function Block Editor showing the final version of the code. It includes the code from the previous steps.

  4. Quittez le bloc. Le bloc met à jour les noms des ports. Les sorties de fonction mean et stdev correspondent aux ports de sortie de bloc mean et stdev, et l'entrée de fonction vals correspond au port d'entrée de bloc vals.

    This shows the outline of the block without connections between the blocks.

  5. Complétez les connexions au bloc MATLAB Function.

    This shows the connected signals between the blocks established in the previous image.

  6. Enregistrez le modèle sous call_stats_block2.

Vérifier les propriétés des variables du bloc MATLAB Function

Vous pouvez vérifier et gérer les propriétés des variables dans les blocs MATLAB Function. Dans cet exemple, vérifiez que l'argument d'entrée vals hérite de ses propriétés de type et de taille :

  1. Double-cliquez sur le bloc MATLAB Function.

  2. Ouvrez le volet Symbols et Property Inspector. Dans l'onglet Function, cliquez sur le bouton Edit Data.

    The Function tab in the Simulink Editor while the MATLAB Function block Editor is open. The Edit Data button on the left is enclosed in a red box.

    Le volet Symbols affiche les noms des variables dans la colonne Name. La colonne Type détermine l'affectation du port de l'argument de la fonction et l'endroit où il apparaît dans l’instruction de la fonction. Dans cet exemple, vals est affecté à un port d'entrée. mean et stdev sont affectés à des ports de sortie. Si vous modifiez l'entrée Type pour l'une des variables, l‘instruction de la fonction change également.

  3. Vérifiez les propriétés de vals. Dans le volet Symbols, cliquez sur la ligne de vals. Property Inspector procède à une mise à jour afin d’afficher les propriétés de vals. La propriété Scope correspond à la colonne Type.

    The Property Inspector and the Symbols pane. The vals input variable is selected, and the Property Inspector displays the variable properties.

Pour plus d’informations sur la création de variables dans le bloc MATLAB Function et la définition des propriétés, voir .

Simuler le modèle

Dans Simulink, cliquez sur Run pour simuler le modèle. Le modèle transmet les données de la fonction aux deux blocs Display.

This shows connected signals between the blocks and the simulation results in the Display blocks.

Le bloc trace également les données dans une fenêtre distincte.

This shows a plot of the input values and a line drawn through the values.

Voir aussi

| |

Sujets associés

Sites web externes