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 :

problème avec la commande "eval"


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut problème avec la commande "eval"
    Bonjour à tous

    J'ai un petit souci avec la commande "eval".

    J'ai des fichiers netcdf s'appellant 1.nc, 2.nc ..... N.nc. Je voudrais récupérer certaines données de chacun des fichiers dans une boucle. Pour cela je dois inclure "nc_get" dans la commande "eval" mais je n'y arrive pas...

    Voila concrètement ce que je veux faire :

    Passer de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x1=nc_varget('1.nc','variable');
    x2=nc_varget('2.nc','variable');
    .
    .
    .
    xN=nc_varget('N.nc','variable');
    à quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=1:N
        eval([ 'x' num2str(i), '=', 'nc_varget', num2str(i), '.nc', variable]);
    end
    Cela ne marche pas, MATLAB ne reconnait pas 'variable'. Je pense que le problème proviens de l'écriture de 'variable' à cause des petits guillemets... Bref pas moyen d'y arriver ! si quelqu'un a la solution pour la bonne écriture de la ligne eval([...]) je suis preneur.

    Merci.

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

    Citation Envoyé par Meskine3 Voir le message
    J'ai un petit souci avec la commande "eval".
    Normal
    Je te conseille de regarder la Comment nommer une suite de fichiers : nom_1.ext, nom_2.ext... nom_N.ext ?

    Ainsi que Comment créer des variables nommées A1, A2, A3, ...,AN ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Non mais ça je sais faire ! c'est comment insérer spécialement le commande nc_varget que je ne sais pas faire...

    l'utilisation de nc_varget est comme suit :
    X = nc_varget('fichier.nc','variable a récupérer')

    et je voudrais l'insérer dans eval comme présenté dans mon premier post.

    Merci de tes deux liens mais il ne me seront d'aucun secours car je sais utiliser eval de manière général mais ne sais pas l'utiliser spécifiquement pour nc_varget, et ce à cause de l'insertion de 'variable à récupérer'.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Comme dit dans la FAQ, la fonction eval est à éviter un maximum

    Citation Envoyé par Meskine3 Voir le message
    Merci de tes deux liens mais il ne me seront d'aucun secours
    Permets-moi d'en douter
    • Tu veux générer les noms de fichier 1.nc, 2.nc, N.nc, d'où mon premier lien.
    • Ta partie eval([ 'x' num2str(i),.. génère les variables x1, x2, ... xN, si je ne m'abuse... (chose à éviter dans MATLAB aussi) d'ou mon second lien.

    Maintenant voici un exemple pour t'en convaincre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i = 1:N
        nomFichier = sprintf('%d.nc',i);
        x{i} = nc_target(nomFichier,'variable');
    end

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Comme dit dans la FAQ, la fonction eval est à éviter un maximum


    Permets-moi d'en douter
    • Tu veux générer les noms de fichier 1.nc, 2.nc, N.nc, d'où mon premier lien.
    • Ta partie eval([ 'x' num2str(i),.. génère les variables x1, x2, ... xN, si je ne m'abuse... (chose à éviter dans MATLAB aussi) d'ou mon second lien.

    Maintenant voici un exemple pour t'en convaincre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i = 1:N
        nomFichier = sprintf('%d.nc',i);
        x{i} = nc_target(nomFichier,'variable');
    end
    Effectivement, je n'avais cliqué que sur le premier lien. La réponse à mon problème était tout simplement de NE PAS passer pas eval, solution que j'aurais pus découvrir dans ton deuxième lien.

    Je m'excuse et te remercie beaucoup winjerome

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

Discussions similaires

  1. Problème avec la commande revoke sous oracle
    Par merlubreizh dans le forum Oracle
    Réponses: 19
    Dernier message: 28/04/2006, 15h02
  2. [C++] Problème avec la commande "make"
    Par quantik-revolution dans le forum Systèmes de compilation
    Réponses: 6
    Dernier message: 02/04/2006, 18h17
  3. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59

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