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 chaine de caractères en numérique


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 25
    Points
    25
    Par défaut conversion chaine de caractères en numérique
    bonjour à tous,

    j'ai un petit pb de début d'année.

    J'ai des données spectrales.
    Lorsque j'exporte mes données, j'ai des VarLabels en "char". Je veux les transformer en "double" pour en faire un vecteur longueur d'ondes.

    Les Varlabels sont comme suit:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    10        
    10,008333 
    10,016667 
    10,025    
    10,033333 
    10,041667 
    10,05     
    10,058333 
    10,066667 
    10,075    
    10,083333 
    10,091667 
    10,1      
    10,108333 
    10,116667 
    10,125    
    10,133333 
    10,141667 
    10,15     
    10,158333 
    10,166667 
    10,175    
    10,183333 
    10,191667 
    10,2      
    10,208333 
    10,216667 
    10,225    
    10,233333 
    10,241667 
    10,25     
    10,258333 
    10,266667 
    10,275    
    10,283333 
    10,291667 
    10,3      
    10,308333 
    10,316667 
    10,325    
    10,333333 
    10,341667
    .... j'ai 7801 variables.

    quand je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VarLabels=VarLabels0(5:end,1:end); %je ne prends pas les 5 premières variables
    l=str2num(VarLabels); % je transforme les caractères en variable numérique
    cela ne fonctionne pas, j'obtiens :

    ce vecteur "l" me permettrait d'afficher dans l'axe des abscisses les bonnes coordonnées... parlantes.

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Petite remarque de départ: VarLabels0(5:end,1:end) peut aussi s'écrire VarLabels0(5:end,:).

    Que renvoie whos VarLabels0 ?

    Sur MATLAB le séparateur décimal est le point '.' et non la virgule ',', STR2NUM te renverra deux valeurs entières et non une valeur flottante. Regarde la différence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    str2num('10,008333 ')
    str2num('10.008333 ')

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Merci !

    Alors effectivement ca vient surement de la différence entre "," et "."

    lorsque je fais whos VarLabels0:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> whos  VarLabels0
      Name             Size                    Bytes  Class
     
      VarLabels0    7805x10                   156100  char array
     
    Grand total is 78050 elements using 156100 bytes
    ca te parle?

    Donc soit je change mon importation? soit je trouve le moyen de changer les virgules en des points? c'est ca?

  4. #4
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    ... soit tu lis chaque ligne en entier depuis ton fichier dans une variable matalb et, dans chaque ligne, tu remplaces les virgules par des points avant de les interpréter.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est en effet cela, une solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VarLabels0(VarLabels0==',') = '.';
    str2num(VarLabels0)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    SUPER !!

    Ca fonctionne !
    Je ne savais pas que matlab n'aimait pas les virgules.

    Dans mon fichier de données spectrales, mes données sont des nombres décimaux à virgule et ca foncitonne bien. C'est pour ca que je ne me suis pas posée la question.

    Merci beaucoup !

  7. #7
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Si tu es sous windows, je te suggère de modifier les paramètres régionaux (panneau de configuration) et de spécifier que tu veux que le séparateur décimal soit la virgule. Ca permettra aux logiciels mi$ro$oft de communiquer avec les autres.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

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

Discussions similaires

  1. Conversion chaîne de caractère/valeur numérique
    Par julieng31 dans le forum Débuter
    Réponses: 5
    Dernier message: 03/06/2009, 16h15
  2. Conversion chaine de caractères en nombre décimal
    Par lodan dans le forum Langage
    Réponses: 3
    Dernier message: 02/04/2009, 19h11
  3. Conversion chaine de caractère => entier (ordre des caractères primordial car ADN)
    Par ctobini dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/09/2007, 11h20
  4. Conversion chaine de caractères en numérique
    Par arezki76 dans le forum Shell et commandes GNU
    Réponses: 33
    Dernier message: 18/07/2007, 11h25
  5. conversion chaine de caractères --> HTML
    Par captainflex dans le forum Ruby on Rails
    Réponses: 9
    Dernier message: 17/06/2007, 21h37

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