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 :

clear all et arguments


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut clear all et arguments
    Bonjour,

    Voici mon probleme: J'apelle une function:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function foobar(number)
       clear all
       disp(num2str(number));
    end
    Evidemment, cela plante car clear all a efface la variable number.
    Comment faire pour tout effacer sauf les arguements de la fonction.

    Merci

  2. #2
    Expert confirmé
    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
    Par défaut
    Faire un clear all au début d'une fonction ne sert strictement à rien (à part comme tu l'as constaté à supprimer les paramètres d'entrée).

    Une fonction ne connait comme variables que celles qui lui sont passées en entrées....
    SAUF s'il s'agit d'une fonction imbriquée (nested function) mais si ton objectif est de ne connaitre que les paramètres d'entrée il suffit alors de faire une fonction "normale" et non pas imbriquée.

  3. #3
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    Tout à fait d'accord avec Caro.
    Sinon si tu veux effacer tout sauf quelques variables , utilises:
    clearvars avec l'argument -except

    disponible depuis la R2008a


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

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Un complément d'infomation pour ceux qui n'ont pas encore la R2008a.

    Vous pouvez trouver ici : http://www.mathworks.com/matlabcentr...hange/181-keep la fonction keep.

    Ca fait un clear all moins la ou les variables précisées. Très pratique

  5. #5
    Membre chevronné

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Faire un clear all au début d'une fonction ne sert strictement à rien (à part comme tu l'as constaté à supprimer les paramètres d'entrée).
    A noter que clear clear all; ne supprime pas que les variables, mais aussi libere les fichiers mex par exemple, etc.
    D'autre part, je doute de l'interet de faire un clear des parameteres d'une function: ca ne liberera pas de memoire car les donnes doivent etre conservee pour la fonction parente (et il n'y a de toute facon pas de copie supplementaire tant que tu ne modifie pas les donnes).

    Greg

  6. #6
    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
    A noter que clear clear all; ne supprime pas que les variables, mais aussi libere les fichiers mex par exemple, etc.
    Dans ce cas, il serait plus lisible d'utiliser les arguments spécifiques de CLEAR :

    Par exemple :


  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Le code est bourre de variable globale (ce n'est pas de mon fait). L'idee du clear all vient de la.

    Sinon, le code code doit etre compatible 2007b

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/09/2011, 16h21
  2. clear all depuis une fonction
    Par Youni92 dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/06/2010, 11h46
  3. PB de clear all dans une fonction
    Par kurul1 dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/03/2009, 13h24
  4. Bouton Reset et Clear all
    Par lfournie dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 25/08/2008, 17h50
  5. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08

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