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 :

Aide lancer "function" [Débutant]


Sujet :

MATLAB

  1. #1
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut Aide lancer "function"
    Bonjour, un modérateur (Caro-Line pour ne pas le citer ) m'a convaincu de l'intérêt d'utiliser les fonctions, mais ce que j'arrivais à faire sans, je n'y arrive plus, par exemple comment appelé une fonction dans une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    function Verif_F_chaine(varargin)
        global A_file_chaine
        if (strcmp(A_file_chaine,'a')==0)
            Test1=1
            @Charger_fichiers;
        end
    Je ne rentre jamais dans la fonction "Charger_fichiers", et pourtant "Test1 s'affiche dans la commande windows, donc je suis entré dans le "if".
    Je rappel que j'ai commencé les fonctions il y a moins d'une heure, donc ce qui peut vous paraitre évident ne l'est pas pour moi.

    Merci
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut, enlève juste le @ et ca devrait passer.

    Tu appelles juste les fonctions par leur nom. Avec entre parenthèse les éventuelles arguments qu'elle prend. Et entre crochet les éventuels sorties

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    n=50;
    for i=1:n
        if i==25
            disp('coucou')
            bonjour
        end
    end
    avec la function bonjour dans un fichier bonjour.m qui vaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function bonjour
     
    disp('bonjour serait mieux ;-)');
     
    end

  3. #3
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Le but est de na pas créer plusieurs ".m", puisque il m'a dit que c'était possible
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Ha ok, fallait préciser

    Dans ce cas, tu crées un fichier .m et tu mets toutes tes fonctions dedans. Ici, tu auras qu'un fichier pouet.m

    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
    function pouet
    n=50;
    for i=1:n
        if i==25
            disp('coucou')
            bonjour
        end
    end
    end
     
     
    function bonjour
    disp('bonjour serait mieux ;-)');
     
    end

  5. #5
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Nota : il n'est pas besoin (et tu vas peut-être même avoir une erreur) de mettre un END en regard de FUNCTION sauf dans le cas de nested function.

    Si je reprends l'exemple de Merel :
    Sous-fonction "standard" (sans les END en trop) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function pouet
    n=50;
    for i=1:n
        if i==25
            disp('coucou')
            bonjour
        end
    end
     
     
     
    function bonjour
    disp('bonjour serait mieux ;-)');
    Sous-fonction imbriquée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function pouet
    n=50;
    for i=1:n
        if i==25
            disp('coucou')
            bonjour
        end
    end
       function bonjour
       disp('bonjour serait mieux ;-)');
     
       end%end de bonjour
    end%end de la fonction principale
    Penser à toujours bien indenter son code (surtout avec les nested mais même tout le temps) : un petit CTRL+A puis cTRL+I sous l'éditeur et le tour est joué



    [HS] Caro-Line est plutôt une modératrice
    Règles du Forum

    Adepte de la maïeutique

  6. #6
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Merci tout fonctionne comme quand je "programmais" sans fonctions, mais je dois reconnaitre que c'est plus propre


    Désolé Miss Caro-Line
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

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

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