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 :

Fonctions en cascade


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut Fonctions en cascade
    Bonjour
    Dans le cadre de l'écriture de programmes matlab, j'ai écrit un programme qui appelle une fonction (fonc1 par exemple, qui elle même appelle une autre fonction (fonc2 par exemple) etc sur 4 niveaux.
    Des variables communes sont utilisées dans les différentes fonctions. Je les déclare en global (dans le même esprit que common en fortran) dans toutes les fonctions où elles apparaissent.

    Mais dans la définition d'une fonction d'un sous-niveau fonc2 par exemple, je suis obligé de commencer par z=fonc2(x,y) où x et y sont deux variables globales. Je les déclare ensuite global dans le script de cette fonction mais le programme hurle car elle sont déjà données dans la définition de la fonction.
    Si quelqu'un a une idée pour éviter ce problème, je suis preneur
    merci
    dm

  2. #2
    Membre chevronné

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    je ne comprends pas tres bien ton probleme... soit la variable est globale, soit elle est passee en parametre, c'est l'un ou l'autre (la deuxieme solution est generalement conseillee)!

    Salutations,

    Greg

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par paradize3 Voir le message
    soit la variable est globale, soit elle est passee en parametre, c'est l'un ou l'autre (la deuxieme solution est generalement conseillee)!
    Tout à fait.

    Un exemple très simple d'utilisation de sous-fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function test
     
    clc
     
    a = 0; 
    disp(a) % a vaut 0
     
    a = ajoute(a,2);
    disp(a) % a vaut 2
     
    a = ajoute(a,3);
    disp(a) % a vaut 5
     
    a = divise(a,5);
    disp(a) % a vaut 1
     
    function x = ajoute(x,n)
    x = x+n;
     
    function y = divise(y,k)
    y = y/k;
    Il existe aussi la méthode des fonctions imbriquées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function test_nested
     
    clc
     
    a = 0;
    disp(a) % a vaut 0
     
    ajoute(2);
    disp(a) % a vaut 2
     
    ajoute(3);
    disp(a) % a vaut 5
     
    divise(5);
    disp(a) % a vaut 1
     
        function ajoute(n)
            a = a+n;
        end
     
        function divise(k)
            a = a/k;
        end
     
    end
    Bien noter le nombre de end utilisés...
    Les fonctions imbriquées ne sont disponibles que danss les versions récentes de MATLAB (depuis la version 7 R14)
    Voir la documentation pour plus d'informations sur ces fonctions : http://www.mathworks.com/access/help.../f4-39683.html

  4. #4
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut
    Merci de votre aide, j'ai fait une confusion entre une variable de l'une des fonctions imbriquées et une variable globale (erreur de débutant!!!)
    En tous cas merci, c'est en lisant l'un des post que j'ai fait compris.
    dm

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [awk] Appel de fonctions en cascade
    Par Taxan dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/08/2013, 13h57
  2. [MySQL] Formulaire cascade choix de ville en fonction du code postal
    Par david2511 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/03/2010, 09h06
  3. fonction pour filtrage avec des combobox en cascade
    Par Montor dans le forum Contribuez
    Réponses: 3
    Dernier message: 09/11/2009, 12h05
  4. VBA-E:Fonction SumIf en cascade
    Par deaqu1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/04/2007, 14h03
  5. fonctions en cascade
    Par daemon2a dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/02/2006, 07h32

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