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 :

Lecture de chaine de caractère et nombre


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 32
    Points
    32
    Par défaut Lecture de chaine de caractère et nombre
    Bonjour à tous,
    j'arrive globalement maintenant à me débrouiller comme un grand sous matlab mais la je commence à expérimenter de nouveaux trucs et des problèmes arrivent bien évidemment! Je tente un dialogue avec excel afin de faciliter mes analyses, et j'ai besoin de spécifier des champs texte... et là, j'ai une petite requête! J'aimerai que le script suivant me sorte une matrice avec mes différents champ texte et nombre mais.. non, ça marche pas!
    Si quelqu'un pouvait m'expliquer ou se trouve mon erreur!
    Merci par avance!
    NB : j'ai désactivé la fonction pour lancer "run" directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    %function xlstest(filename)
     
    filename = '181110_Ctrl_Bic5_P15_T1_C18_Front0001.dat'
     
    mixed = [filename];
     
    [nrows, ncols] = size(mixed);
     
    for k = 1:nrows
        nums(k,:) = sscanf(mixed(k,:), '%d%*s%d%*s%d%*s%d%*s%d%*s%d%*s', [1, inf]);
    end;
    nums

  2. #2
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Citation Envoyé par Ludo1919 Voir le message
    NB : j'ai désactivé la fonction pour lancer "run" directement
    Si tu as la R2007b à minima tu n'est pas obligé de comenter ta ligne function . Tu peux utiliser le bouton Run et sélectionner "edit Run Configurations for xlstest.m ..."

    et tu taperas :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    filename = '181110_Ctrl_Bic5_P15_T1_C18_Front0001.dat'
    xlstest(filename)
    ou directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlstest ('181110_Ctrl_Bic5_P15_T1_C18_Front0001.dat')

    A lire :
    Using Run Configurations to Run Files with Input Arguments in the Editor

    Je sais ça ne résout pas ton problème mais c'était juste pour infos.
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 32
    Points
    32
    Par défaut
    Merci... lol, mais non effectivement ça ne résout pas mon problème...!

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 32
    Points
    32
    Par défaut
    Bon, je commence à comprendre un peut le systeme de lecture de caractère et nombre et j'en suis là..:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mixed = [filename];
     
    [nrows, ncols] = size(mixed);
     
    for k = 1:ncols
        nums(1,k) = sscanf(mixed(1,k), '%d%s%d%s%d%s%d%s%d%s%d%s', [1, inf]);
    end;
    mais ça bug toujours!

    NB (edit) : le message d'erreur : ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Subscripted assignment dimension mismatch.
     
    Error in ==> xlstest at 10
        nums(1,k) = sscanf(mixed(1,k), '%d%s%d%s%d%s%d%s%d%s%d%s', [1, inf]);

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 32
    Points
    32
    Par défaut
    Bon... j'ai mis la matiné mais j'ai trouvé...! lol
    voici un exemple si quelqu'un se pose la même question un jour...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [str count] = sscanf('181110_Ctrl_Bic5_P15_T1_C18_Front0001.dat', '%6ld%*9c%ld%*2c%ld%*2c%ld%*2c%ld%*c');
    %ld pour les nombre car la class est double (64bits)
    %*9c pour passer 9 caractères de texte pas exemple...

    mon problème venait du nombre de caractère, de l'ordre à respecter...!
    Merci tug!
    by

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par Ludo1919 Voir le message
    %ld pour les nombre car la class est double (64bits)
    Ce n'est pas utile ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    % Solution 1
    filename = '181110_Ctrl_Bic5_P15_T1_C18_Front0001.dat';
     
    num = sscanf(filename,'%d%*9c%d%*2c%d%*2c%d%*2c%d%*6c%d%*4c')
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    % Solution 2
    filename = '181110_Ctrl_Bic5_P15_T1_C18_Front0001.dat';
     
    idx = isstrprop(filename, 'digit');
    filename(~idx) = 32;
    num = sscanf(filename,'%d')
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    % Solution 3
    filename = '181110_Ctrl_Bic5_P15_T1_C18_Front0001.dat';
     
    [start_idx, end_idx, extents, matches, tokens, names, splits] = regexp(filename,'\d*');
    num = str2num(char(matches))
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

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

Discussions similaires

  1. Comment différencier chaine de caractère et nombre
    Par kazuzu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/05/2009, 15h05
  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. [Débutant] Lecture de chaines de caractères
    Par yabbiyou dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/03/2009, 18h00
  4. lecture de chaines de caractères
    Par berberat dans le forum Langage
    Réponses: 10
    Dernier message: 16/08/2008, 00h21
  5. lecture de chaine de caractères
    Par Halloula dans le forum C
    Réponses: 3
    Dernier message: 07/01/2007, 10h41

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