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 :

Concaténer une variable retourner par une fonction


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut Concaténer une variable retourner par une fonction
    Bonjour,
    Voila j'utilise la fonction "contour" dans une boucle qui me renvoie une variable C et H, or j'aimerai les garder à chaque tour de boucle et non les écraser. J'ai donc pensé à cela mais ca ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     for i=1:N
                C=['c' num2str(i)];
                H=['h' num2str(i)];
                figure (1), [C,H]=contour('v6',x_n,y_n,u_n,i);
               end
    J'espérais obtenir c1 c2 c3... cN et h1 h2 h3.... hN mais sans succès.

    Un peu d'aide serait la bienvenue

    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
    Comment créer des variables nommées A1, A2, A3, ...,AN ?

    Dans ton code C et H sont écrasés à chaque fois.


    NB : pourquoi faire "figure(1)" à chaque fois dans la boucle ?

  3. #3
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    il faut juste créer une 'structure' qui va stocker c et h au fur et à mesure par example un cell array
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cont={}
    for i=1:N
                figure (1), [C,H]=contour('v6',x_n,y_n,u_n,i);
                cont={cont{:},{C,H}}
    end
    edit : il doit y avoir plus propre en préallouant cont

  4. #4
    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
    @tubaas : attention au vocabulaire : structure est un objet bien spécifique dans MATLAB, alors que là tu utilises un tableau de cellules (de façon assez tordue si je peux me permettre ).

  5. #5
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    oui d'où les apostrophes.
    en quoi est-ce que c'est tordu sinon, (parce que je le fais assez souvent )?
    edit: quand je ne sais pas combien d'éléments j'aurais à stocker

  6. #6
    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
    Ben si tu regardes le lien de la FAQ, ce que tu as écrit s'écrit tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    cont={}
    for i=1:N
       figure (1);
       [C,H]=contour('v6',x_n,y_n,u_n,i);
       cont{i} = {C,H};
    end
    Il me semble parce qu'avec toutes tes accolades tu m'as un peu perdue.

    Et personnellement je garderais quand même 2 variables distinctes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    C=cell(1,N);
    H=C;
    for i=1:N
       figure (1);
       [C{i},H{i}]=contour('v6',x_n,y_n,u_n,i);
    end
    Ensuite suivant le type de C et H, l'utilisation du cell array n'est pas forcément nécessaire.

  7. #7
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    oui voir mon edit.
    en fait c'est à ça que je pensais quand je disais de préallouer : préallocation puis code similaire au tien.
    en fait j'utilise cette version dans un cas assez particulier de listes que je peux être amené (via IHM) à augmenter. une action utilisateur va ajouter un élément dans cette liste (en général liste d'objets). je me demandais s'ailleurs s'il y avait d'autres 'structures' (,au sens plus général de structure de données mais je ne suis pas sûr que ce soit le bon terme non plus ) que le tableau de cellules qui seraient plus adaptées

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut
    Oui effectivement, garder 2 variables seraient plus judicieux.

    Ta dernière proposition Caro-line semble me donnait satisfaction. Je l'avais tenté au tout départ sans succès, en effet j'avais mis [C(i), H(i)] au lieu de [C{i], H{i}]

    Je continue mon programme et si tout roule, je clôturerai la discussion

Discussions similaires

  1. Concaténation dans une variable partagée par 2 fonctions
    Par Aiglon13 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 23/05/2012, 09h36
  2. Réponses: 8
    Dernier message: 05/04/2011, 08h06
  3. Réponses: 1
    Dernier message: 13/04/2010, 10h00
  4. [XSLT] probleme de resultat retourné par une variable
    Par coucouA dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 16/08/2006, 11h05
  5. Réponses: 11
    Dernier message: 31/10/2005, 17h59

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