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 :

Traitement de données


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut Traitement de données
    Bonjour,

    Je suis actuellement en stage. Je viens de réaliser une application sous LabView qui permet de faire l'acquisition de données. Ces données sont enregistrées dans des fichier texte.
    Maintenant je dois faire une application sous Matlab pour le traitement des données précédemment enregistrées. Le traitement sera de l'analyse par Ondelette et par Fourier.
    Or voila je suis nul en Matlab, donc je ne sais pas par où commencer mon application.
    Je pensai dans un premier temps de charger le fichier texte où se trouve les données puis de tracer les courbes pour ensuite faire le traitement;

    Merci de bien vouloir m'aider.

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Quel est le format d'enregistrement de tes données (pourrais-tu mettre un exemple/extrait du fichier que tu dois importer)?

    As-tu commencer à coder quelquechose (même si c'est faux)? Ou au moins une idée de l'algorithme que tu souhaites utiliser?

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Merci de bien vouloir m'aider.

    Voici en piece jointe un fichier texte contenant des données enregistrer avec mon application sous LabView et sur lesquelles je voudrais réaliser les traitements.

    Pour ce qui est du code j'ai deux trois lignes mais je suis sure que c'est faux. J'essaye surtout de comprendre Matlab en parcourant le forum ainsi que les tutoriels pour avoir un peu de connaissance.

    Je sais juste une chose c'est que pour l'analyse par Ondelette il faut une toolbox. Ce que j'ai enfin je crois sur l'ordinateur.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut, par rapport à ton fichier, le plus simple est de le lire en utilisant textscan. (Ca n'est que mon avis ^^)

    Notamment, regarde le paramètre headerlines

    Met nous quand même ce que tu as commencé à codé. Même si c'est faux, ca nous donne une idée de ce que tu fais.

    N'hésites pas non plus à regarder la faq. FAQ

    Pour voir les toolbox que tu as, tu peux taper

    dans le command window ;-)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    merci de m'aider.

    Pour "textscan" j'ai essayé mais quand je fais run rien ne se passe, à moins que je ne sache pas utiliser Matlab.

    Voici un peu de code que j'ai fais :
    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
    % Ouverture du fichier en lecture txt
    fid = fopen('test.txt','rt');
     
    % Nombre de ligne à passer
    N = 24;
     
    for n = 1:N
       fgetl(fid);
    end
     
    % Continuer la lecture des données utiles ici
    C=textscan(fid,'%f32');
     
    % Fermeture du fichier
    fclose(fid);
     
     
    %data = load('test.txt');
     
    %dlmread('test.txt', '\t', 24,0);
    Pour ce qui est des toolbox j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >> ver
    -------------------------------------------------------------------------------------
    MATLAB Version 7.7.0.471 (R2008b)
    MATLAB License Number: 560114
    Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 3)
    Java VM Version: Java 1.6.0_04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode
    -------------------------------------------------------------------------------------
    MATLAB                                                Version 7.7        (R2008b)
    Simulink                                              Version 7.2        (R2008b)
    Curve Fitting Toolbox                                 Version 1.2.2      (R2008b)
    Signal Processing Toolbox                             Version 6.10       (R2008b)
    Statistics Toolbox                                    Version 7.0        (R2008b)
    Symbolic Math Toolbox                                 Version 5.1        (R2008b)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Ok, en effet, je n'utiliserais pas ton fichier comme ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    % Ouverture du fichier en lecture txt
    fid = fopen('test.txt','rt');
     
    % C'est la que tu sautes tes 24 lignes
    data=textscan(fid,'%s %s %s %s %s %s %s','headerlines',24);
     
    A=str2num(cell2mat(data{1}));
     
    % .... etc
    Après, tu mets ce que tu veux comme format. perso, je préfère travailler avec un %s mais chacun ces goûts.


    Autre point SUPER IMPORTANT:

    Tes fichiers labview sortent des nombres avec des virgules. Or Matlab ne les comprendra pas. Il faut que tu remplaces toutes tes virgules par des points.

    Si tu n'as pas bcp de fichier, tu peux le faire dans l'éditeur de texte remplacer , par .

    PS: pense aux balises codes ainsi qu'à indenter ton code (ctrl+a et ctrl+i)

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    une fonction qui permet d'importer des fichiers textes comportant des entêtes : txt2mat disponible sur le matlab file exchange. Elle permet d'importer des données contenant des virgules.

    Apparemment tu n'as pas accès à la Wavelet toolbox, tu peux néanmoins télécharger une version d'essai sur le site de mathworks.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    le probleme avec mes fichiers c'est que je pense que ca va être pénible de remplacer toutes les "," par des "." car en moyenne mes fichiers aurons plus de 65 000 lignes, voir même plus. Dans le fichier en pièce jointe j'en ai supprimé car la taille du fichier était trop grande. De plus j'aurais plusieurs fichiers.

    Je vais essayer en utilisant la fonction "txt2mat" que Magelan m'a suggéré.


    Par contre Merel je n'ai pas compris le PS :
    Citation Envoyé par Merel Voir le message
    PS: pense aux balises codes ainsi qu'à indenter ton code (ctrl+a et ctrl+i)
    Merci de votre aide.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Les balises codes, c'est pour le forum. Quand tu mets du code, met les balises, ca permet d'aérer le sujet et de mieux s'y retrouver. Magelan l'a fait sur ton post

    Dernière modification par magelan ; Hier à 23h33. Motif: Ajout des balises code => Sélection du texte et bouton #

    Pour ce qui est de l'indenter, c'est pour mieux t'y retrouver dans ton code. Quand tu utilises des boucles et que tu en as plusieurs imbriquée, tu peux indenter ton code pour t'y retrouver plus facilement. En gros, tu mets des tabulation au début des lignes. Les touches ctrl+a et ctrl+i le font automatiquement pour toi.

    Pour ce qui est de tes fichiers, tu peux en effet regarder du côté du file exchange comme te le suggère magelan.

    Mais le nombre de ligne à remplacer n'est pas un facteur important avec l'option "remplacer tout". C'est plus le nombre de fichier que tu as à traiter. Si tu as un fichier, tu peux le faire à la main. Si tu en as toutes les heures sur plusieurs années, ca va être un peu plus tendu...

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Ha d'accord, merci bien.

    Ben je vais essayer de faire les deux méthodes en remplaçant les "," et en utilisant la fonction txt2mat. Ca me permettra d'apprendre.
    Par contre je me pose une question est ce qu'il faut que le fichier texte soit dans un répertoire précis de l'ordinateur ou bien on peut le mettre n'importe où. Car quand je fais F5 il ne se passe rien et je n'ai pas d'erreur pourtant.

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Soit tu le mets dans ton répertoire courant ou dans l'un des répertoires du PATH de matlab et là tu peux l'appeler en renseignant juste le nom du fichier, soit tu le mets dans un autre répertoire, et là tu dois spécifier le chemin et le nom du fichier.

    Quel est le code que tu exécutes?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Voici le code que j'essaye d'executer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    % Ouverture du fichier en lecture txt
    fid = fopen('test.txt','rt');
     
    % C'est la que tu sautes tes 24 lignes
    data=textscan(fid,'%s %s %s %s %s %s %s','headerlines',24);
     
    A=str2double(cell2mat(data{1}));
     
    % Fermeture du fichier
    fclose(fid);
    De plus mon fichier texte qui s'intitule test, je l'ai mis dans :
    C:\Documents and Settings\stagiaire\Mes documents\MATLAB

    J'ai téléchargé le dossier contenant la fonction txt2mat sur le file exchange de Matlab, et j'ai obtenu un fichier.m. Je ne sais pas ce que je dois en faire. Je suppose qu'il faut que je le mette dans un dossier où Matlab est installé.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Dans ton code, tu n'utilises pas la fonction du file exchange. As-tu donc pensé à modifier les virgules en point dans ton fichier test ? Parce que ce code fonctionne sur mon ordi ^^

    sinon, tu peux placer le fichier .m (du file exchange) dans le répertoire ou est ton fichier test.txt. Par contre, faut changer la fonction qui lit le fichier. Utiliser txt2mat à la place de textscan

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Oui j'ai bien remplacé toutes les "," par les ".".
    Quand j'appui sur F5, j'obtiens ceci dans la command window :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ??? Cell contents reference from a non-cell array object.
     
    Error in ==> cell2mat at 44
    cellclass = class(c{1});
     
    Error in ==> test at 17
    A=str2double(cell2mat(data{1}));

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    C'est bizarre ca. As-tu changer de fichier test.txt ?

    Fais-tu bien un clear avant de lancer le petit bout de code ?

    sinon, essaye de passer par une boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    % Ouverture du fichier en lecture txt
    fid = fopen('test.txt','rt');
     
    % C'est la que tu sautes tes 24 lignes
    data=textscan(fid,'%s %s %s %s %s %s %s','headerlines',24);
     
    for i=1:length(data{1})
    A(i)=str2double(cell2mat(data{1}(i)));
    end
    % Fermeture du fichier
    fclose(fid);

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Ben j'ai pas changé de fichier texte, ni modifié test.txt (à part changer les "," en ".").
    Par contre j'ai trouvé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %Affichage du résultat
    disp(data);
    Donc mon code est à présent comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % Ouverture du fichier en lecture txt
    fid = fopen('test.txt','rt');
     
    % C'est la que tu sautes tes 24 lignes
    data = textscan(fid,'%s %s %s %s %s %s %s','headerlines',24);
     
    A=str2double(cell2mat(data{1}));
     
    % Fermeture du fichier
    fclose(fid);
     
    %Affichage du résultat
    disp(data);
    Et maintenant dans la command window j'obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Columns 1 through 5
     
        {851x1 cell}    {851x1 cell}    {851x1 cell}    {851x1 cell}    {851x1 cell}
     
      Columns 6 through 7
     
        {851x1 cell}    {851x1 cell}
    Je vais tester ton code.
    Merci.

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Avec ton code quand j'appui sur F5 rien ne se passe. Acune erreur et aucun résultat.
    Si je rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %Affichage du résultat
    disp(data);
    Alors la j'obtiens la même chose qu'avec mon code précédent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Columns 1 through 5
     
        {851x1 cell}    {851x1 cell}    {851x1 cell}    {851x1 cell}    {851x1 cell}
     
      Columns 6 through 7
     
        {851x1 cell}    {851x1 cell}

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Ha, je viens de comprendre. C'est normal qu'il n'y ai pas d'erreur et aucun résultat d'afficher.

    Les ; (point virgule) à la fin des lignes matlab empêche l'affichage dans le commande window.

    si tu veux voir le résultat que tu as dans chaque cellule, il suffit d'enlever le ; à la fin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    % Ouverture du fichier en lecture txt
    fid = fopen('test.txt','rt');
     
    % C'est la que tu sautes tes 24 lignes
    data = textscan(fid,'%s %s %s %s %s %s %s','headerlines',24);
     
    for i=1:length(data{1})
    A(i)=str2double(cell2mat(data{1}(i)));
    end
    A
    % Fermeture du fichier
    fclose(fid);
    Là, tu auras dans le commande window la variable A qui correspond à la première cellule.
    Si tu veux un élément particulier de A, il suffit de faire A(1) ou A(50) par exemple, etc...

  19. #19
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Dans MATLAB, tu as une fenêtre nommé workspace : dans cette fenêtre se trouve les variables créées. Si tu double-clic sur une de ces variables, elle s'affiche dans une fenêtre appelé array editor.

    Dans ton cas, c'est la variable A qui t'intéresse et non la variable data.

    Sinon, au risque d'insister lourdement, avec la fonction txt2mat, ça ne prends qu'une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = txt2mat('test.txt')
    (il faut d'abord que tu copies la fonction txt2mat.m dans ton répertoire courant ou dans un des répertoires du PATH de MATLAB).
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Ouais ça marche
    Merci beaucoup!!!!

    Par contre désolé Merel mais je vais utiliser la fonction txt2mat proposé par Magelan, car c'est beaucoup plus rapide.

    Encore merci à tous les deux

    Maintenant que l'étape de la lecture est passée, il me reste plus qu'a tracer les courbes puis ensuite faire les analyses. Je vais m'y atteler tout de suite.
    Si je bloque ça sera possible de me refiler un petit coup de main ?

Discussions similaires

  1. [MySQL] PB traitement de données !
    Par Tr@nkill dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/04/2006, 11h36
  2. [Formulaires] Traitement des données dans une autre page...
    Par sekiryou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/03/2006, 09h08
  3. [PHP-JS] Traitement des données dans une autre page...
    Par sekiryou dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2006, 09h06
  4. traitement des données avant envoie dans MySQL
    Par italiasky dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 07/02/2006, 22h50
  5. Programmation pour traitement de données
    Par benbois dans le forum Langages de programmation
    Réponses: 16
    Dernier message: 19/10/2005, 17h01

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