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 :

Modifier le nom d'une matrice dans une boucle [Débutant]


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Modifier le nom d'une matrice dans une boucle
    Bonjour,

    Dans une grande boucle, je calcule toute une série de choses qui font intervenir un grand nombre de variables.

    Je stock ces variables dans une seule grande matrice(RESULTATM1), de façon à pouvoir tout copier/coller sur excel facilement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (...)
    RESULTATM1{1,6}= 'EVAPORATEUR [KglS]';
    RESULTATM1{1,7}= KglS_ev;
    RESULTATM1{2,6}= 'qm air [kg/s]';
    RESULTATM1{2,7}= qM_SE;
    RESULTATM1{3,6}= 'T° air in [°C]';
    RESULTATM1{3,7}= T_SEIN-ZeroC;
    (...)
    J'aimerais faire varier un paramètre (appelons le TSCIN) de 1 à 10 (d'où l'utilisation d'une grande boucle), et sauvegarder, à chaque boucle, ma matrice sous le nom 'RESULTATM1_TSCIN(i)'.

    Merci d'avance pour votre aide,
    Thomas

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

    La question la plus posée ici je pense...
    Comment créer des variables nommées A1, A2, A3, ..., AN ?

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Je rencontre cependant encore un problème.

    Lorsque j’exécute la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    eval(sprintf('TSCIN%01d = RESULTATM1;',T_SCIN));
    Dans l'invite de commande, en ayant défini au préalable RESULTATM1 et T_SCIN, j'obtiens bien le résultat voulu.

    Par contre, lorsque j'utilise effectivement cette même commande dans ma sous routine, ça plante!
    En fait, je résous un système d'équations non linéaires via lsqnonlin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lsqnonlin(@MExch1_eff,...
    Et dans la fonction "MExch1_eff", à la fin, je crée mon tableau de cellule RESULTATM1. J'insère, tout à la fin de cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RESULTATM1{24,6}='COP';
    RESULTATM1{24,7}= COP;
     
    eval(sprintf('TSCIN%01d = RESULTATM1;',T_SCIN));
    Et quand je lance, MATLAB m'annonce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Error using MExch1_eff (line 222)
    Error: Unexpected MATLAB expression.
    
    Error in lsqnonlin (line 197)
                initVals.F = feval(funfcn{3},xCurrent,varargin{:});
    
    Error in MODE1_EtudPar (line 15)
        [xpac,resnorm] = lsqnonlin(@MExch1_eff,...
    
    Caused by:
        Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue.
    ?? alors que ma ligne de code est un copié/collé conforme de celle qui fonctionne dans l'invite de commande.

    Any idea?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Comme expliqué dans le lien, générer N variables est une mauvaise pratique ! On utilise un tableau de cellules.

    Sinon que contient T_SCIN ?
    Regarde ce que retourne ceci avant la ligne eval
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf('TSCIN%01d = RESULTATM1;',T_SCIN)

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Finalement j'ai utilisé la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    currentFile = sprintf('RESULTATM1_TSCIN%01d.mat',T_SCIN-273.15);
    save(currentFile, 'RESULTATM1');
    qui parait-il est nettement mieux.

    Problem solved

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

Discussions similaires

  1. Remplacement d'une ligne par une autre dans une matrice
    Par Mathematiker dans le forum Scilab
    Réponses: 4
    Dernier message: 17/02/2015, 14h57
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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