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 :

convertir une matrice


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 13
    Points
    13
    Par défaut convertir une matrice
    Bonjour
    jai une matrice sous forme ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    T = 
     
        'T'     'S '   'LG'   '50'     '1'    '0'    '0'    'NaN'    
        'A'     'D '    'LK'    '50'   '1'    '0'    '1'    '360'    
        'C'     'N '   'LG'    '50'    '1'    '0'    '0'    'NaN'
    et je veux la convertir sous format:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    T = 
     
        'T'     'S '   'LG'   '50'     [1]    [0]    [0]    [NaN]    
        'A'     'D '    'LK'    '50'   [1]    [0]    [1]    [360]    
        'C'     'N '   'LG'    '50'    [1]    [0]    [0]    [NaN]
    qaund je fait mat2cell ça ne marche pas!!

  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
    mat2cell transforme une matrice en tableau de cellules. Ce n'est pas ce que tu veux.

    Déjà tu ne veux travailler que sur une partie de ton tableau de cellules : T(:,5:end).
    Et pour chaque élément de ce sous-tableau transformer la chaine de caractère en numérique.
    Je dirais (sans pouvoir tester) quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T(:,5:end)=cellfun('str2num',T(:,5:end));
    Voir l'aide de cellfun. Il faudra peut-être ajouter le paramètre UniformOutput.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    j'ai essayé mais ça ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    T = 
     
        'T'    'S '    'LG'    '50'    '1'    '0'    '0'    'NaN'
        'A'    'D '    'LK'    '50'    '1'    '0'    '1'    '360'
        'C'    'N '    'LG'    '50'    '1'    '0'    '0'    'NaN'
     
    K>> T(:,5:end)=cellfun('str2num',T(:,5:end))
    ??? Error using ==> cellfun
    Unknown option.
     
    K>> T(:,5:end)=cellfun('str2num',T(:,5:end),'UniformOutput', false)
    ??? Error using ==> cellfun
    Too many inputs.
     
    K>> T(:,5:end)=cellfun(@str2num,T(:,5:end))
    ??? Conversion to cell from double is not possible.

  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
    Bon je n'ai pas le temps de creuser mais tu peux déjà le faire avec une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [m,n]=size(T);
    for lig=1:m
       for col=5:n
          T{lig,col}=str2num(T{lig,col});
       end
    end
    Sinon tu as quelle version de MATLAB ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    c'est bon ça marche avec ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    T(:,5:end)=cellfun(@str2num,T(:,5:end),'UniformOutput',false)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    je voudrai en fait chercher dans une matrice changer toutes les valeurs numerique qui passent en string : pour cela j'utiliser la boucle suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    T = 
     
        'T'     'S '   'LG'   '50'     [1]    [0]    [0]    [NaN]    
        'A'     'D '    'LK'    '50'   [1]    [0]    [1]    [360]    
        'C'     'N '   'LG'    '50'    [1]    [0]    [0]    [NaN]
     
    for j=5:end
      for i=1:3
       if isnumeric(T{i,j})
          T(i,j)=cellfun(@str2num,T(i,j),'UniformOutput',false);
       end
      end
    end
    mais ça ne march pas!!!

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    T = {'T'     'S '   'LG'   '50'     [1]    [0]    [0]    [NaN]    
        'A'     'D '    'LK'    '50'   [1]    [0]    [1]    [360]    
        'C'     'N '   'LG'    '50'    [1]    [0]    [0]    [NaN]}
     
    T = cellfun(@num2str,T,'UniformOutput', false)

Discussions similaires

  1. Convertir une matrice en polygones
    Par dawadam dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 18/07/2011, 20h13
  2. convertir une matrice 3D en vrml
    Par Décembre dans le forum MATLAB
    Réponses: 0
    Dernier message: 20/04/2010, 20h52
  3. Convertir une matrice en une image
    Par jijikkk dans le forum OpenCV
    Réponses: 0
    Dernier message: 24/01/2010, 14h28
  4. Réponses: 1
    Dernier message: 30/10/2009, 09h48
  5. [Débutant] Convertir une matrice 3D en matrice 2D avec chaine de caracteres
    Par grohino dans le forum MATLAB
    Réponses: 6
    Dernier message: 14/05/2008, 16h03

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