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 :

Créer plusieurs matrices à nom variable et les utiliser


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Créer plusieurs matrices à nom variable et les utiliser
    Bonjour,

    Je souhaite créer plusieurs matrices dont le nom diffère uniquement d'une variable, puis les utiliser. J'ai réussi à les créer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    C=xlsread('matrice.xls');
    for i=1:10
    eval(['A' num2str(i) '=[C(i,:)]']);
    end
    Donc ce bout de code me permet de créer 10 matrices A1, A2, A3, ... , A10.
    Cependant, je n'arrive pas à réutiliser ces matrices. Comment les nommer dans la suite du programme pour faire appel à elles ?

    Par exemple, je ne peut évidemment pas faire:
    for i=1:10
    Ai=...;
    end

    C'est ce Ai que je souhaite exprimer.
    Merci.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Hello,

    Merci du coup de main, cependant:

    J'ai pensé à passer par la méthode d'un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    B{1} = [1 2 3];
    B{2} = [1 2 3 4];
    B{3} = [1 2 3 4 5];
    Mais en réalité, mes matrices A1, A2, ... contiennent plusieurs lignes (3 lignes * 12 colonnes). J'avais simplifier le code pour le coller dans mon précédent post.
    Du coup, je ne peux pas créer de tableau avec l'indice entre crochets ( A{i} )

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Et comment as-tu insérer l'indice dans les noms des variables?
    Sinon, tu peux aussi utiliser un compteur que tu incrémentes après chaque insertion d'une nouvelle cellule dans B.

    Peux-tu nous montrer le code complet de ton 1er post?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C=xlsread('matricepluscourschemin.xls');
    D=xlsread('tableaudechet.xls');
    nb=input('Entrez le nb de méthaniseurs');
    n=size(C,2);
    for i=1:nb
    l=input('Numéro du noeud');
    eval(['A' num2str(i) '=[C(1,2:n);C(l+1,2:n);D(2,:)]']);
    end
    Voilà mon code complet, je ne sais pas si c'est très compréhensible & exploitable.
    C'est ma boucle for qui me permet de générer mes matrices avec avec à chaque fois l'indice dans le nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(['A' num2str(i) '=[C(1,2:n);C(l+1,2:n);D(2,:)]']);
    Cette ligne me crée la matrice Ai (donc A1,A2...) avec derrière le = les données pour la remplir. Par exempl,e je me retrouve avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A1 =
     
         1     2     3     4     5     6     7     8     9    10    11    12
        15     8     0     5    14    15    28    13    20    30    13    15
         5     6     9    11     5     6     4     9     3    10    14     3
    et ainsi de suite pour mes nb matrices

    Par la suite je cherche à effectuer un tri sur ces matrice, et c'est là que j'ai un soucis pour les nommer.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Dans ce cas, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    C=xlsread('matricepluscourschemin.xls');
    D=xlsread('tableaudechet.xls');
    nb=input('Entrez le nb de méthaniseurs');
    n=size(C,2);
    for i=1:nb
    A{i}=[C(1,2:n);C(i+1,2:n);D(2,:)];
    end
    A{1} sera la matrice que tu as nommé A1 dans ton exemple.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Effectivement ça marche, je pensais avoir testé cette solution pourtant.
    Merci beaucoup
    Bonne fin de journée.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/03/2014, 02h46
  2. Réponses: 2
    Dernier message: 02/10/2013, 21h57
  3. [XL-2010] Créer plusieurs graphiques tout en effaçant les données
    Par Dadadidou dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/03/2012, 21h16
  4. Réponses: 2
    Dernier message: 31/07/2011, 17h51
  5. [thread] créer des queues à nom variable
    Par cnicolas dans le forum Langage
    Réponses: 3
    Dernier message: 25/01/2008, 22h07

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