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 :

Récuperation partielle d'une chaine de caractere


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 12
    Points
    12
    Par défaut Récuperation partielle d'une chaine de caractere
    Bonjour à tous,

    Voilà mon problème je dispose d'un vecteur contenant des valeur de temps, comme ceci :

    '00:00:00.000000000'
    '00:00:00.000066667'
    '00:00:00.000133333'
    '00:00:00.000200000'
    '00:00:00.000266667'

    Je souhaiterais récupérer seulement la partie en seconde (ex : 00.000066667) , n'hésitez pas à détailler votre réponse car je suis débutant et j'ai lu certaine reponse pour d'autre problème mais je ne comprenais pas forcement tout ^^

    Je vous remercie grandement par avance pour votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur en analyse décisionnelle
    Inscrit en
    Juin 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur en analyse décisionnelle

    Informations forums :
    Inscription : Juin 2013
    Messages : 113
    Points : 133
    Points
    133
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a = {'00:00:00.000000000';'00:00:00.000066667';'00:00:00.000133333';'00:00:00.000200000';'00:00:00.000266667'}
    b = str2double(cellfun(@(x) x{end},cellfun(@(x) strsplit(x,':'),a,'UniformOutput',false),'UniformOutput',false))
    Premièrement, un strsplit sur chaque cellule de string grâce à cellfun pour obtenir les parties séparées par ':', puis, grâce à un autre cellfun, on extrait la dernière valeur de chaque cellule et on convertit en double.

    Si ta longueur est fixée, alors tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a = ['00:00:00.000000000';'00:00:00.000066667';'00:00:00.000133333';'00:00:00.000200000';'00:00:00.000266667']
    b = str2num(a(:,end-11:end))

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup, mais petite rectification je viens de me rendre compte que j'avais des temps supérieurs à une minute donc je ne peut pas récupérer que la valeur en seconde :/ puis-je quand même utiliser ces fonctions ou ne pourrais-je pas directement convertir tout en seconde ?

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur en analyse décisionnelle
    Inscrit en
    Juin 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur en analyse décisionnelle

    Informations forums :
    Inscription : Juin 2013
    Messages : 113
    Points : 133
    Points
    133
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a = {'00:00:00.000000000';'00:00:00.000066667';'00:00:00.000133333';'00:00:00.000200000';'00:00:00.000266667';'00:02:00.000266667';'03:00:00.000266667'}
    b = cell2mat(cellfun(@(x) sum(str2double(x).*[60*60,60,1]),cellfun(@(x) strsplit(x,':'),a,'UniformOutput',false),'UniformOutput',false))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a = ['00:00:00.000000000';'00:00:00.000066667';'00:00:00.000133333';'00:00:00.000200000';'00:00:00.000266667';'00:02:00.000266667';'03:00:00.000266667']
    b = sum(bsxfun(@times,[str2num(a(:,1:2)),str2num(a(:,4:5)),str2num(a(:,end-11:end))],[60*60,60,1]),2)

  5. #5
    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
    Une boucle sera sans doute plus simple à comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    str = {'00:00:00.000000000'
        '00:00:00.000066667'
        '00:00:00.000133333'
        '00:00:00.000200000'
        '00:00:00.000266667'};
     
    temps = zeros(numel(str), 3);
     
    for n = 1:numel(str)
        temps(n,:) = sscanf(str{n}, '%d:%d:%f', [1,3]);
    end
     
    temps
    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)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Je vous remercie encore pour vos réponses, je me suis servi de la boucle que j'ai bidouillé un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    temps = zeros(numel(t), 3);
     
    for n = 1:numel(t)
        temps(n,:) = sscanf(t{n}, '%d:%d:%f');
    end
     
    minutes=temps(:,2);
    seconde=temps(:,3);
    for k=1:n;
     
    seconde(k)=seconde(k)+minutes(k)*60;
     
    end

  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 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
    Pour la deuxième partie du code, tu peux directement écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temps(:,3) = temps(:,3) + temps(:,2)*60:
    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)

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2011, 14h59
  2. [PHP 4] Récuperer des données a partir d'une chaine de caracteres URL
    Par moonwar dans le forum Langage
    Réponses: 4
    Dernier message: 13/02/2009, 07h59
  3. Récuperer des morceaux d'une chaine de caracteres
    Par spaukensen dans le forum Langage
    Réponses: 3
    Dernier message: 22/07/2008, 18h15
  4. Réponses: 3
    Dernier message: 12/05/2006, 10h53
  5. Récuperer une chaine de caractere
    Par Shandler dans le forum C++
    Réponses: 18
    Dernier message: 28/02/2005, 17h08

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