IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

paramètres et structure


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Par défaut paramètres et structure
    Bonjour,

    J'ai un script avec plusieurs paramètres définis par une structure :
    struc.parametre1=
    struc.parametre2=
    ...
    Dans ce script, plusieurs fonctions font appel à cette structure de paramètres.

    Je souhaiterais lancer ce script en faisant varier un (ou plusieurs) paramètre(s) de la structure.
    J'ai donc créé une fonction qui appelle mon script mais je ne sais pas comment faire pour lui imposer d'évaluer le script avec plusieurs valeurs d'un paramètre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Je n'ai pas vraiment compris ce que tu souhaitais faire, pourrais-tu fournir un exemple ?
    À première vue je te dirais d'utiliser une fonction est non un script (cf. FAQ Quelle est la différence entre un script et une fonction ?).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Par défaut
    J'ai dit n'importe quoi

    Je rectifie :

    J'ai une fonction dans laquelle j'ai passé mes paramètres dans une structure et qui me sert d'entrée pour d'autres fonctions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function r = myfct1 (par)
     
    %je définis mes paramètres
    struc.par1=1;
    struc.par2=2;
    ...
     
    x1=fct2(struc);
    x2=fct3(struc);
     
    etc
    Maintenant, j'ai une autre fonction (encore) qui appelle myfct1 et pour laquelle j'ai besoin d'évaluer myfct1 pour plusieurs valeurs d'un paramètre (par exempte je veux l'évaluer pour par1=2 puis par1=3....)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function T = myfct2
     
    struc=setfield(struc,'par1',4); %change la valeur du paramètre par1, il vaut maintenant 4
     r=myfct1(par);
    end
    Lorsque j'essaye le code ci dessus, myfct1 continue d'être évaluer avec les paramètres fixés au départ...(ce que je comprends puisque lorsque j'appelle myfct1 je fixe les paramètres au début mais je ne vois pas comment faire autrement)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ta structure struc est locale à ta fonction myfct1 non ?

    De ce que je comprends, il te faut utiliser les valeurs que tu passes à la fonction myfct1. Pour ceci par exemple :
    (par exempte je veux l'évaluer pour par1=2 puis par1=3....)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function T = myfct2
    par1 = 2;
    myfct1(par1);
    par1 = 3;
    myfct1(par1);
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function r = myfct1 (par1)
    
    struc.par1= par1;
    struc.par2=2;
    ...
    Sinon il faut passer la structure en paramètre de la fonction myfct1 et ne pas réinitialiser les valeurs.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Par défaut
    Ok je vois, ca marche avec la première solution. Merci

    La structure est effectivement locale a myfct1.
    Si je veux passer la structure en paramètre, je fais comment ?

    Il faut d'abord faire une fonction avec les valeurs initiales de tous les paramètres ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function struc = parametres
     
    struc.par1=1,
    struc.par2=2;
    ..
     
    end

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par héloiise Voir le message
    Si je veux passer la structure en paramètre, je fais comment ?
    Si tu souhaites qu'elle soit locale à la fonction myfct1 autant oublier cette solution.
    Le moyen cependant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function T = myfct2
    
    % initialisation de la structure
    
    struc.par1 = 2;
    myfct1(struc);
    
    struc.par1 = 3;
    myfct1(struc);
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function r = myfct1(struc)
    
    % éventuelle définition d'autres champs
    
    x1 = fct2(struc);
    x2 = fct3(struc);
    
    end

Discussions similaires

  1. paramètres fonction structures pointeurs
    Par tom31 dans le forum Débuter
    Réponses: 2
    Dernier message: 12/01/2008, 18h22
  2. structure en paramètre d'une fonction
    Par Tex-Twil dans le forum C
    Réponses: 6
    Dernier message: 29/03/2006, 21h42
  3. sequence de structure en paramétre de methode.
    Par lessecs dans le forum CORBA
    Réponses: 3
    Dernier message: 11/02/2006, 21h15
  4. Réponses: 10
    Dernier message: 04/01/2006, 16h57
  5. Réponses: 10
    Dernier message: 17/12/2004, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo