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 :

Conversion d'une variable type char en variable type num [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Par défaut Conversion d'une variable type char en variable type num
    Bonjour,

    je souhaite tracer des teneurs en fonction du temps à l'aide de matlab. Pour cela, je dois les extraire (entre autres données dont j'ai besoin) de fichiers excel que j'ai téléchargés d'une base de données.
    Dans mon programme, je charge donc les fichiers par la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [num,text,raw]=xlsread('Nitrates.xlsx');
    puis j'extrais les colonnes qui m'intéressent en faisant, par exemple :
    Le problème, c'est qu'en faisant cela, j'obtiens pour les teneurs des variables de type char que je n'arrive pas à convertir en nombre. Les teneurs s'affichent sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    teneurs(1:5) =
        '47.500000000000000'
        '48.000000000000000'
        '50.000000000000000'
        '50.000000000000000'
        '50.500000000000000'
    Ce ne sont toutefois pas des chaînes de caractères et je n'arrive pas à les exploiter.
    J'espère que j'ai été claire, est-ce que quelqu'un peut m'aider ?

    Merci

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    salut

    normalement tu devrais récupérer des valeurs numériques sous matlab si ces valeurs sont bien numériques sous Excel (est ce bien le cas ??)
    par contre comme le tableau raw peut contenir plusieurs type de données, il est au format "tableau de cellules" et du coup pour acceder à un élément, il vaut mieux utiliser les accolades({})
    par exemple raw{:,6}
    utilises plutot le tableau num pour récupérer les valeurs numériques

    enfin juste au cas ou
    tu es sous quel OS ?
    si windows, as tu Excel d'installé sur ton poste ?

    Fabien

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Par défaut
    Je ne pense pas que les teneurs soient en format nombre sous excel, parce que quand j'essaie de les importer manuellement comme des nombres (en choisissant number plutôt que cell lors de l'import), j'obtiens des NaN. Mais je n'ai aucune idée de comment changer ça !
    Peut être mon problème vient-il juste de mon incompétence en Excel...

    Le problème lorsque je fais
    teneurs=raw{:,6};
    c'est que dans teneurs, je récupère juste la première cellule, qui est le titre de ma colonne !
    J'ai essayé d'utiliser num, mais il ne contient pas les teneurs, preuve de plus que ce ne sont pas des nombres ?

    Je suis sous Windows, et oui, Excel est installé sur mon ordinateur

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour

    Tu as plusieurs solutions pour résoudre ton problème.

    La première, c'est de changer directement dans excel tout tes chiffres en format nombre. Pour cela, CTRL + A puis CTRL + H remplacer les . par des virgules.

    Ou bien tu peux faire la transformation directement dans matlab.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monTableau = cellfun(@(x) str2double(x),teneurs,'UniformOutput',false);
    monTableau = cell2num(monTableau);

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Par défaut
    Pour la transformation directement dans Matlab, Matlab me retourne "Undefined function 'cell2num' for input arguments of type 'cell'." ...
    Par contre, effectivement, les virgules dans Excel changent tout

    Merci beaucoup pour votre aide !

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Citation Envoyé par anouck Voir le message
    Pour la transformation directement dans Matlab, Matlab me retourne "Undefined function 'cell2num' for input arguments of type 'cell'." ...
    Par contre, effectivement, les virgules dans Excel changent tout

    Merci beaucoup pour votre aide !
    Mea culpa, une étourderie de ma part. C'est la fonction cell2mat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir une donnée en type Char vers un type Décimal
    Par requetor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/10/2011, 09h49
  2. Conversion d'une structure en char*
    Par coyotte507 dans le forum C++
    Réponses: 5
    Dernier message: 06/04/2008, 21h10
  3. conversion d'une string en char
    Par vulkanosaure dans le forum C++
    Réponses: 12
    Dernier message: 02/11/2007, 19h55
  4. taille d'une variable de type char
    Par NeMo_O dans le forum C
    Réponses: 17
    Dernier message: 26/11/2006, 01h17
  5. Conversion d'une chaine de char en numerique
    Par simone.51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/03/2004, 16h47

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