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 :

Comment mélanger nombres et texte dans une matrice


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Comment mélanger nombres et texte dans une matrice
    Bonjour,
    Je cherche à mélanger des nombres et du texte à l'intérieur d'une matrice.
    Quelqu'un aurait il une idée de la manière dont il faut procéder?
    Merci

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    dans une matrice tu ne peux pas

    mais le cell array est ton ami
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mycellarray        = {};
    mycellarray{end+1} = 1;
    mycellarray{end+1} = 'toto';
    mycellarray{end+1} = [1,2,3,4,5];

    après tu y accèdes comme une matrice
    Tu peux aussi en faire à plusieurs dimensions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mycellarray{i,j} = 'toto'
    ou combiner avec une structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mycellarray{i,j}.value = 1;
    mycellarray{i,j}.text = 'chouette';

    Enfin bref, tu peux faire ce que tu veux dessus.
    N'oublie pas d'utiliser cellfun plutôt que des boucles ensuite, histoire d'avoir un programme efficace.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour cette réponse!
    Maintenant je bloque sur autre chose:

    J'ai une cellarray composée texte dans la première colonne puis de nombres partout ailleurs.
    Je souhaiterais la trier par ligne. Mais je voudrais garder chaque ligne telles qu'elles sont.

    La partie du script me posant problème est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i=1;
    M=[A(i,:);B(i,:);C(i,:)];
    %%% A={'text' 2 3 7 2]
    Final=sortrows(M,[-2 -5 -3]);
    Le message d'erreur est :
    ??? Error using ==> cell.sort
    Input argument must be a cell array of strings.

    Error in ==> sortrows>sort_back_to_front at 134
    [v,ind] = sort(x(ndx,k));

    Error in ==> sortrows at 100
    ndx = sort_back_to_front(x_sub);

    Error in ==> Programme at 19
    Final=sortrows(M,[-2 -5 -3]);
    Comment puis je m'y prendre ?

    Merci d'avance

  4. #4
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Expérimente ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A{1} = 'toto';
    A(1)
    A{1}
    et essaye de comprendre la différence entre les 2 dernières lignes.


    Ensuite si je lis la doc de sortrows j'apprends qu'il peut trier des cellarrays de chaines de caractères (par ordre lexico) ou des matrices.

    Les deux mélangés... je ne suis pas sûr



    Tu es sûr que tu abordes bien ton problème ? ça me parait particulièrement bizarre de vouloir trier des strings et des chiffres.




    Voila, bon courage

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci encore pour ces conseils!

    En revanche il est possible que je ne m'y prenne pas de la meilleure des facons...

    Je suis habitué à utiliser MATLAB comme pur outil mathématique, mais maintenant j'ai envie de passer à autre chose. Je tente d'aller plus loin en m'amusant à programmer.. Mais c'est juste le début.

    En fait je cherche à réaliser un programme me permettant de réaliser le classement d'un championnat de foot par exemple.
    A la fin de chaque journée, j'ai un vecteur avec toutes les valeurs (points, bp bc etc..) pour chaque équipe. Ensuite avec la fonction "sortrows" j'effectue le classement.
    Mon problème réside dans le fait que le nom de chaque équipe devrait apparaître dans ma matrice (ou cellarray) finale pour que ce soit plus clair...

    Ce doit être une manipulation toute simple...
    Je cherche du coté du script: A(i,:).Nom = [3 2 3 5 4 ] mais je retrouve le meme problème pour le résultat final...

    Si quelqu'un a une piste ou une manière différente pour aborber ce cas...

  6. #6
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    pourquoi tu ne fais pas plutôt un vecteur d'équipe
    avec equipe(1).nom = 'truc', equipe(1).stats = [ ... ]

    avec une ligne dans stats par journée et en colonne tes bc, bp, etc.


    en comptant le nombre de lignes de stats tu sauras où est arrivé l'équipe dans la compet.

Discussions similaires

  1. [ODBC] Comment stocker des grandes zones de textes dans une base Oracle / ODBC
    Par aurelienC dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/06/2012, 10h52
  2. [Débutant] Charger un fichier texte dans une matrice de nombres (fonction load).
    Par Invité dans le forum MATLAB
    Réponses: 1
    Dernier message: 09/07/2010, 16h54
  3. Réponses: 3
    Dernier message: 02/06/2010, 04h46
  4. Caractères fichier texte dans une matrice
    Par Dabech dans le forum Débuter
    Réponses: 3
    Dernier message: 13/05/2008, 17h40
  5. Réponses: 4
    Dernier message: 05/05/2007, 19h12

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