Contenu principal

set_param

Définir la valeur des paramètres Simulink

Description

set_param(object,parameter1,value1,...,parameterN,valueN) définit le paramètre Simulink® spécifié parameter sur la valeur spécifiée value pour l’objet cible spécifié par object. L’objet cible peut être un modèle, un sous-système, une bibliothèque, un bloc, une ligne, un port, un élément de bus ou un élément de port.

Pour définir plusieurs valeurs de paramètre pour l’objet cible, appelez la fonction set_param une seule fois avec plusieurs arguments nom-valeur plutôt que de l’appeler pour chaque paramètre. Définir plusieurs paramètres avec un seul appel de fonction est efficace, car un appel unique évalue les paramètres une seule fois. La fonction ne définit aucun paramètre si certains noms ou certaines valeurs de paramètre ne sont pas valides.

exemple

Exemples

réduire tout

Vous pouvez définir la valeur d’un paramètre de bloc au moyen de la fonction set_param avec les arguments en entrée suivants :

  • Handle de bloc ou chemin d’accès complet du bloc (nom du bloc inclus), par exemple 'myModel/mySubsystem/myblock'

  • Nom du paramètre

  • Nouvelle valeur que vous souhaitez affecter au paramètre

Pour plus d’informations sur les handles de bloc et sur les chemins d’accès de bloc, consultez Get Handles and Paths. Pour obtenir un exemple indiquant comment obtenir le chemin d’accès du bloc, consultez Get Block Paths.

Pour plus d’informations sur la procédure à suivre pour obtenir le nom des paramètres, consultez Get Block Parameter Names.

Dans cet exemple, vous définissez les coefficients de la fonction de transfert spécifiée par un bloc Transfer Function nommé Alpha-sensor Low-pass Filter.

  • Le bloc se trouve dans le sous-système Controller du modèle slexAircraftExample.

  • Les coefficients du numérateur de la fonction de transfert sont stockés dans le paramètre Numerator. Les coefficients du dénominateur de la fonction de transfert sont stockés dans le paramètre Denominator.

  • La nouvelle valeur que vous souhaitez affecter au numérateur est 1.2. La nouvelle valeur que vous souhaitez affecter au dénominateur est [0.8*Tal,1], où Tal est une variable.

Ouvrez l'exemple. Chargez ensuite le modèle slexAircraftExample.

mdl = 'slexAircraftExample';
load_system(mdl)

Définissez les coefficients de la fonction de transfert.

path = [mdl,'/Controller/Alpha-sensor Low-pass Filter'];
set_param(path,'Numerator','1.2','Denominator','[0.8*Tal,1]');

Pour vérifier la valeur des paramètres Numerator et Denominator, utilisez la fonction get_param.

num = get_param(path,'Numerator')
num = 
'1.2'
denom = get_param(path,'Denominator')
denom = 
'[0.8*Tal,1]'

Lorsque le chemin d’accès du bloc est long et que vous souhaitez définir plusieurs paramètres, envisagez d’utiliser des handles de bloc.

Vous pouvez définir la valeur d’un paramètre de bloc au moyen de la fonction set_param avec les arguments en entrée suivants :

  • Handle de bloc ou chemin d’accès complet du bloc (nom du bloc inclus), par exemple 'myModel/mySubsystem/myblock'

  • Nom du paramètre

  • Nouvelle valeur que vous souhaitez affecter au paramètre

Pour plus d’informations sur la procédure à suivre pour obtenir le chemin d’accès du bloc, consultez Get Block Paths.

Pour plus d’informations sur la procédure à suivre pour obtenir le nom des paramètres, consultez Get Block Parameter Names.

Dans cet exemple, vous définissez les coefficients de la fonction de transfert spécifiée par un bloc Transfer Function nommé Alpha-sensor Low-pass Filter.

  • Le bloc se trouve dans le sous-système Controller du modèle slexAircraftExample.

  • Les coefficients du numérateur de la fonction de transfert sont stockés dans le paramètre Numerator. Les coefficients du dénominateur de la fonction de transfert sont stockés dans le paramètre Denominator.

  • La nouvelle valeur que vous souhaitez affecter au numérateur est 1.2. La nouvelle valeur que vous souhaitez affecter au dénominateur est [0.8*Tal,1], où Tal est une variable.

Ouvrez l'exemple. Ensuite, récupérez le handle de bloc à l’aide de la fonction getSimulinkBlockHandle. Pour obtenir le handle de bloc et charger le modèle de manière simultanée, définissez le deuxième argument de la fonction getSimulinkBlockHandle sur true.

path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true)
h = 
465.0011

Pour définir la valeur des paramètres, spécifiez le bloc à l’aide du handle. Le handle contient un double. N’essayez pas de saisir manuellement le numéro d’un handle, car vous devrez peut-être spécifier plus de chiffres que ceux affichés par MATLAB®. Au lieu de cela, affectez le handle à une variable et utilisez le nom de la variable pour spécifier le bloc.

set_param(h,'Numerator','1.2','Denominator','[0.8*Tal,1]');

Vous pouvez définir la valeur d’un paramètre de modèle au moyen de la fonction set_param avec les arguments en entrée suivants :

  • Nom du modèle

  • Nom du paramètre

  • Nouvelle valeur que vous souhaitez affecter au paramètre

Pour plus d’informations sur la procédure à suivre pour obtenir le nom des paramètres de modèle, consultez Get Model Parameter Names.

Ouvrez l'exemple. Chargez ensuite le modèle f14.

load_system('f14')

Définissez le solveur du modèle f14 sur ode15s et le temps d’arrêt sur 3000 secondes.

set_param('f14','Solver','ode15s','StopTime','3000')

Pour vérifier la valeur des paramètres Solver et StopTime, utilisez la fonction get_param.

solver = get_param('f14','Solver')
solver = 
'ode15s'
stoptime = get_param('f14','StopTime')
stoptime = 
'3000'

Ouvrez l'exemple. Ensuite, ouvrez le modèle f14.

open_system('f14')

Obtenez le handle du bloc Signal Generator nommé Pilot.

h = getSimulinkBlockHandle('f14/Pilot');

Obtenez la position du bloc.

pos = get_param(h,'Position')
pos = 1×4

    15    18    55    42

La fonction renvoie la position du bloc (spécifiée sous forme de vecteur de coordonnées mesurées en pixels) : [left top right bottom].

Déplacez le bloc vers la droite.

pos = [pos(1)+20 pos(2) pos(3)+20 pos(4)];
set_param(h,'Position',pos);

Déplacez le bloc vers le haut.

pos = [pos(1) pos(2)-20 pos(3) pos(4)-20];
set_param(h,'Position',pos);

Étirez le bloc horizontalement.

pos = [pos(1)/4 pos(2) pos(3) pos(4)];
set_param(h,'Position',pos);

Ouvrez l'exemple. Ensuite, ouvrez le modèle f14.

open_system('f14')

Le modèle inclut un bloc Signal Generator nommé Pilot. Déplacez le nom du bloc vers le haut du bloc.

set_param('f14/Pilot','NameLocation','top')

Arguments d'entrée

réduire tout

Nom, chemin d’accès ou handle d’objet spécifié sous forme de vecteur de caractères, de string scalar ou de scalaire numérique.

La manière de spécifier l’objet cible dépend de son type.

  • Modèle : nom ou handle du modèle.

  • Sous-système : nom ou handle du sous-système.

  • Bibliothèque : nom ou handle de la bibliothèque.

  • Bloc : chemin d’accès du bloc ou handle de bloc.

  • Ligne : handle de la ligne.

  • Port : handle du port.

  • Élément de port : chemin d’accès composé du nom de modèle ou du chemin d’accès du bloc de sous-système, d’une barre oblique et du nom du port ou du chemin d’accès de l’élément de bus. Pour un port d’élément de bus, le chemin d’accès de l’élément de bus propose la hiérarchie depuis le bus de niveau supérieur jusqu’à l’élément cible, en séparant chaque nom dans la hiérarchie par un point.

Pour plus d’informations sur la procédure à suivre pour obtenir les handles et les chemins d’accès, consultez Get Handles and Paths. Pour spécifier plusieurs objets avec un paramètre commun, utilisez un cell array de vecteurs de caractères, un tableau de chaînes de caractères ou un tableau de handles. Le paramètre doit être spécifié pour tous les objets spécifiés, sans quoi la fonction renvoie une erreur.

Exemple : 'vdp/Mu'

Exemple : 'mymodel/Subsystem1/Out1.nonsinusoidal.saw'

Conseils

  • Si vous effectuez plusieurs appels à set_param pour le même bloc, spécifiez le bloc à l’aide d’un handle numérique. Cette méthode est plus efficace que d’utiliser le chemin complet d’accès du bloc avec set_param. Utilisez getSimulinkBlockHandle pour obtenir un handle de bloc.

  • N’essayez pas de spécifier manuellement le numéro d’un handle, par exemple 5.007, car il est généralement nécessaire de spécifier plus de chiffres que ceux affichés par MATLAB®. Assignez le handle à une variable et utilisez le nom de cette variable.

Types de données : char | string | double

Nom du paramètre, de la propriété ou de l’attribut, spécifié en tant que vecteur de caractères ou string scalar. Certains noms sont sensibles à la casse.

Pour plus d’informations sur les paramètres, les propriétés ou les attributs, consultez les informations relatives à l’utilisation programmatique dans les pages de référence correspondantes. Par exemple :

Pour obtenir tous les paramètres d’un objet cible, utilisez la fonction get_param avec l’option 'ObjectParameters'. Certains des paramètres renvoyés peuvent être réservés à un usage interne uniquement.

Exemple : 'Solver'

Exemple : 'SimulationCommand'

Exemple : 'Position'

Exemple : 'NameLocation'

Types de données : char | string

Valeur du paramètre, spécifiée dans le format déterminé par le type de paramètre. Certaines valeurs de paramètre sont sensibles à la casse. Les valeurs sont souvent des vecteurs de caractères ou des string scalars, mais il peut également s’agir de scalaires numériques, de tableaux et de valeurs d’autres types.

De nombreuses valeurs de paramètre de bloc sont spécifiées sous forme de vecteurs de caractères ou de string scalars, à l’exception de Position (qui est spécifié comme un vecteur) et de UserData (qui peut être n’importe quel type de données).

Limitations

  • Si vous utilisez matlab -nodisplay pour démarrer une session, vous ne pouvez pas utiliser set_param pour exécuter une simulation. Le mode -nodisplay ne supporte pas la simulation à l’aide de set_param. Utilisez la fonction sim à la place.

  • Lorsque vous utilisez la fonction set_param pour renommer un bloc ou un signal, les noms suivants ne sont pas valides : noms vides, noms qui ne contiennent que des caractères de nouvelle ligne et noms qui commencent ou se terminent par /.

Conseils

Après avoir défini les paramètres dans l’espace de travail MATLAB, mettez à jour le diagramme pour voir les modifications apportées à un modèle.

set_param(model,'SimulationCommand','Update')

Historique des versions

Introduit avant R2006a