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

  1. #1
    Membre à l'essai
    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
    Points : 16
    Points
    16
    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 é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
    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 ?
    Règles du Forum

    Adepte de la maïeutique

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    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 é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
    @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 ).
    Règles du Forum

    Adepte de la maïeutique

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    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 é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
    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.
    Règles du Forum

    Adepte de la maïeutique

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    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 à l'essai
    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
    Points : 16
    Points
    16
    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

  9. #9
    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
    @tubaas : ce n'est pas la non pré-allocation qui me pose souci dans ton code, c'est ça :
    C'est pas joli du tout...


    @neogamaes : utiliser les tableaux de cellules est le plus facile à partir du moment où C et H ne sont pas des scalaires.
    Règles du Forum

    Adepte de la maïeutique

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    ah oui j'avais pas saisi qu'on pouvait allouer 'à la volée' une cellule qui n'était pas déjà définie.
    à vrai dire je n'aime pas trop ça mais bon, c'est déjà effectivement mieux que mon code.

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