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 :

Débutant cherche aide pour traiter ses données


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut Débutant cherche aide pour traiter ses données
    Bonjour à Tous

    Je suis assez novice dans l'utilisation de Matlab et j'ai besoin de votre aide pour pouvoir traiter mes données.
    Mon problème est le suivant : Je cherche à importer des données à partir d'un fichier .rtd. le problème est que, comme montré dans les pièces jointes, il m'importe mes données sur une matrice à 5 colonnes alors qu'il en faudrait 6. Du coup ma matrice ne ressemble pas à grand chose et je vais avoir du mal à traiter mes données en faisant une confiance aveugle à mon programme. J'utilise la commande uiimport car je n'en connait pas d'autres ou alors je n'arrive pas à m'en servir.
    C'est pourquoi j'ai besoin de votre aide de Matlabeur confirmés.

    Merci d'avance.

    PS : Je vous mes des photos pour illustrer ce qu'il m'arrive.
    Images attachées Images attachées    

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Je ne vois pas où viens ton problème, peux-tu nous montrer le code que tu utilises pour ça !
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Effectivement je pourrais mais il se trouve que je ne sais pas ce qu'est un code ... Désolé je débute.

  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
    Citation Envoyé par glmeilleur Voir le message
    je ne sais pas ce qu'est un code
    euh...ça va être compliqué là...

    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uiimport('fichier.jpg')
    c'est du code par exemple.


    Le problème c'est qu'UIIMPORT est perdu car tu as 2 séparateurs : les deux-points et l'espace.

    A priori je te conseillerais d'utiliser TEXTSCAN mais j'ai peur que ce soit un peu compliqué pour toi :
    Pourquoi utiliser MATLAB si tu ne connais pas cet outil ?
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Et bien j'utilise Matlab parce que mes profs m'ont demandé de l'utiliser. Je suis en Master 2 recherche et du coup je vais avoir plein de données à traiter et du coup il semblerait que Matlab soit le plus approprié. Le gros problème c'est que comme notre formation est bien faite ('ironique') nous sommes formés sur scilab car gratuit. Du coup les commandes ne sont pas les mêmes. Du coup j'ai essayé de traiter avec scilab mais lui ne veux carrément pas importer ce type de données. Voilà pourquoi j'utilise Matlab. Après si un code correspond à ce que moi j'appelle une commande je ne comprend pas l'intérêt de la question puisque j'ai dit que j'utilisai uiimport.
    En tous cas merci de la réponse je vais voir comment utiliser textscan (à moins qu'il y ait une explication disponible me permettant de ne pas passer 2h à essayer de comprendre). Sinon je traiterai mes données à la main mais ça va me prendre un certain nombre d'heures.
    Pour finir il me semble que pour savoir utiliser un logiciel et bien, comme tout le reste, il faut commencer, donc il me semble normal de ne pas tout comprendre du premier coup. Après peut être que vous avez réussi du premier coup mais moi c'est loin d'être le cas et mes profs avec leur 10 ans d'expériences vraisemblablement non plus. Donc j'utilise ce logiciel car j'en ai tout simplement besoin.
    Merci

  6. #6
    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
    Oki
    Désolée si je t'ai blessé en quelque façon
    On a l'habitude de poser ce genre de question car beaucoup de gens finalement n'utilisent pas le bon outil par rapport à leur besoin.

    Donc pour finir sur le vocabulaire disons que le code c'est une suite de commandes.
    Je pense que kmaniche n'avait pas vu ta commande dans l'image que tu as joint.

    Donc une possibilité avec textscan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fid = fopen(fichier,'rt');%ouverture du fichier en lecture texte
    res = textscan(fid,'%d:%d:%f %d:%d:%f','headerlines',1);
    fclose(fid);
    Il se peut qu'il y ait un problème si comme le montre ta capture d'écran la dernière ligne n'est pas complète.

    Ensuite regarde ce qu'il y a dans res mais à partir de là tu devrais pouvoir avancer.
    Règles du Forum

    Adepte de la maïeutique

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Pas de probléme. Je trouvais ça un peu bizarre un forum où tout le monde savais déjà se servir du logiciel mais je comprend sans probléme que des gens ne l'utilise pas à bon escient .
    En tout cas cette ligne de commande ne me donne pas exactement ce que j'escomptait mais il y a du mieux. Et je pense même, grâce à cela, pouvoir finir mon programme. Je vous montre quand même le résultat en piéce jointe (bloc note à importer et résultat de l'importation)
    Je vous tiendrai au courant de mon avancée. (je ferais ça plutôt demain je suis un peu fatigué).
    Après j'ai une autre question : je sais que sur scilab on peut importer (ou traiter) des fichiers commençant par le même nom en mettant * à la fin. Exemple j'ai dix fichiers jer01 jer02 jer03 jer04 ... jer10 et je veux tous les importer ou autre. Cela marche t il sous MATLAB ? je confesse que je n'ai pas encore essayé (me aculpa).
    En tout cas si quelqu'un à une idée pour ma question de départ c'est à dire d'importer dans une matrice de 6 colonnes au lieu de 5 je suis toujours preneur. Sinon meci beaucoup à toi Caro-Line car je pense pouvoir bien avancer dans mon programme .
    PS : plus de place pour piéce jointe désolé.

  8. #8
    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
    Pour la lecture successive de tes fichiers :
    Comment nommer une suite de fichiers : nom_1.ext, nom_2.ext... nom_N.ext ?

    Pour les pièces jointes : j'ai modifié les PJ de ton 1er post pour qu'elles prennent moins de place.

    Essaye de ne joindre que le minimum (zippe aussi si cela peut faire gagner de la place) et pour le texte un copier/coller dans des balises code (bouton #) ou quote (bouton info-bulle) permet de gagner encore plus de place.
    Règles du Forum

    Adepte de la maïeutique

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Super merci beaucoup.
    J'ai bientôt fini mon prog. Finalement j'utilise le code uiimport car textscan me met mes données dans une cellule. Du coup il faut que je modifie toutes mes données en mettant ':' à la place d'un espace, ça prend un peu de temps mais c'est raisonnable. Du coup j'en profite pour vous embêter une dernière fois pour savoir s'il y aurait une astuce pour pouvoir modifier directement mon fichier .rtd ?

    En tous cas merci pour le reste.

  10. #10
    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
    Tu pourrais attacher un de tes fichiers (dans une archive zip ou rar) et nous dire exactement ce que tu veux en extraire ?
    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)

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Alors voilà mon problème c'est que les données que je veux importer sont, comme le disait caro line, séparées par deux types de séparateurs : ':' et espace.
    Dans le fichier que je vous joins maintenant il y a la version "pas bon" c'est mes données brutes que j'essaye d'importer sur une matrice à 6 colonnes. Comme on le voit ça s'importe sur 5 colonnes et pour moi c'est problématique. (en effet par le programme on pourrait tout remettre en ordre mais le problème c'est que ça ne va pas toujours se présenter comme ça). Sur la version 'bon' c'est lorsque j'ai rajouté des ':' et là ça marche impec.
    Donc si je pouvais mettre les deux points automatiquement au lieu de le faire à la main ça m'arrangerai fortement.

    Voilou.

    Si vous avez un moyen je suis preneur.
    Fichiers attachés Fichiers attachés

  12. #12
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Citation Envoyé par glmeilleur Voir le message
    Sur la version 'bon' c'est lorsque j'ai rajouté des ':' et là ça marche impec.
    Donc si je pouvais mettre les deux points automatiquement au lieu de le faire à la main ça m'arrangerai fortement.
    Donc au lieu de faire un changement manuel des espace en ':', tu peux par exemple utiliser "strrep"
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Ah ah ça m'intéresse fortement kmaniche !!! Seulement j'ai un gros problème avec les explications (help) de Matlab . Je voulais donc savoir à quoi ce code sert exactement et, si possible, comment s'en servir. Je conçois que j'abuse un peu de votre temps précieux mais si vous pouviez me donner une explication quant à l'utilisation de ce code ça serai vraiment fabuleux ... Désolé de mon ignorance et merci d'avance.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    ça y est je crois avoir compris le fonctionnement de cette commande. Le problème c'est qu'il faudrait changer les espace en point dans le bloc note (fichier .rtd) avant de l'importer et ça malheureusement je ne sais pas le faire.
    Des suggestions ?

  15. #15
    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 glmeilleur Voir le message
    Des suggestions ?
    Citation Envoyé par Dut Voir le message
    Tu pourrais attacher un de tes fichiers (dans une archive zip ou rar) et nous dire exactement ce que tu veux en extraire ?
    Je me suis mal fait comprendre.

    Je voulais que tu attaches un de tes fichiers rtd (en le mettant dans une archive rar ou zip) et que tu nous dises exactement les données que tu comptais en extraire.
    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)

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    D'accord alors en fait mes données ce sont des temps. Le but est de faire la différence entre le temps de la colonne de droite et celui de la colonne de droite et ce, pour chaque ligne (Pour avoir du temps de réaction). Le programme est simple en soit mais l'importation des données est problématique . Comme les temps sont séparés par des espace et des ":" alors ça m'importe le tout dans une matrice bizarre. Comme je l'ai dit plus haut il suffit que je remplace les espaces par des ':' et là c'est magique.
    Je joint un de mes fichier RTD.
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  17. #17
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonsoir,


    J'ai pas eu beaucoup de temps, je te donne ce code vite fait, à toi d'essaiyer, chez moi il marche parfaitement :

    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
    clc ;
    clc ;
     
    fid = fopen('jer44.rtd');
     
    curline = fgetl(fid);
     
    sz = size(curline,2) ;
    i = 1 ;
    while ischar(curline)
        if size(curline,2) ==25
            mat{i, 1} = curline(1:11) ;
            mat{i, 2} = curline(14:24) ;
            i=i+1 ;
        end
        curline = fgetl(fid);
    end
    fclose(fid);
     
     
    mat
    mat est un tableau de cellules, il contient deux colonnes :

    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
    >> mat
     
    mat = 
     
        '14:06:05.38'    '14:06:05.71'
        '14:06:09.50'    '14:06:09.83'
        '14:06:11.42'    '14:06:11.69'
        '14:06:15.04'    '14:06:15.32'
        '14:06:17.19'    '14:06:17.51'
        '14:06:19.55'    '14:06:19.82'
     
    >> whos
      Name      Size            Bytes  Class    Attributes
     
      mat       6x2               984  cell               
     
    >>
    Avec ce code, tu n'as pas besoin de modifier le fichier source
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  18. #18
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    kmaniche je te remercie énormément et presque je ferai bruler un cierge en ton honneur mais malheureusement ça ne marche pas chez moi . J'utilise la version 7.4 de matlab et chez moi le code curline n'existe pas. Mais en tous cas je te remercie pour tes efforts c'est très sympa de ta part. Après, la question que je t'aurai bien posée et comment cela marche car toutes mes données ne comportent pas le même nombre de ligne donc je voulais savoir où cela était adaptable.

    En tous cas merci beaucoup


  19. #19
    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
    Citation Envoyé par glmeilleur Voir le message
    le code curline n'existe pas.
    curline n'est pas une fonction mais une variable qui est créée au début du code de kmaniche.

    Tu es sur d'avoir bien copié (et compris) son code ?
    Règles du Forum

    Adepte de la maïeutique

  20. #20
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Je te redonne le code complet, assure toi que le fichier est dans le même repertoire que le programme avant d'ececuter :
    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
     
    clc ;
     
    fid = fopen('jer44.rtd');
     
    curline = fgetl(fid);
    curline = fgetl(fid);
     
    sz = size(curline,2) ;
    i = 1 ;
    while ischar(curline)
        if size(curline,2) ==sz
            mat{i, 1} = curline(1:11) ;
            mat{i, 2} = curline(14:24) ;
            i=i+1 ;
        end
        curline = fgetl(fid);
    end
    fclose(fid);
     
    clear ans fid i sz curline ;
     
    mat
    curline est une variable dans le programme, et non une commande ou fonction matlab. Elle sert à lire le fichier ligne par ligne, ensuite si une ligne comporte 25 caractères (25 correspond à la taille de la deuxième ligne) elle sera ajouter à un tableau de cellules.

    Le programme étant très simple non ? ou bien
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

Discussions similaires

  1. Débutant cherche aide pour Origin
    Par johannj dans le forum Débuter
    Réponses: 0
    Dernier message: 14/10/2010, 09h30
  2. [MySQL] Aide pour affichage de donné recup dans une BD
    Par mitchb dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/05/2006, 11h38
  3. Réponses: 3
    Dernier message: 05/12/2005, 02h30
  4. [Persistance]Aide pour sauver des données en XML
    Par le Daoud dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/06/2005, 13h39
  5. Debutant en C cherche aide pour fonctions!!!!
    Par benji17c dans le forum C
    Réponses: 5
    Dernier message: 30/09/2003, 12h47

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