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 :

Convertir données de matlab à fichier texte (.txt)


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut Convertir données de matlab à fichier texte (.txt)
    salut
    j'ai des données (sous forme d'un vecteur 26 lignes et une colonne )dans un fichier matlab "aa.mat"
    comment je peu transférer ces donnés à un fichier texte ?
    merci

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    je te conseille un peu de lecture : http://matlab.developpez.com/faq/?page=fileio

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    salut
    j'ai un code débutant à propos ceci mais avec erreurs
    je peux le publier ?

  4. #4
    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
    Bonjour,

    bien sûr, tu peux nous montrer le code ainsi que les messages d'erreurs complets que tu obtiens.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    bonsoir
    j'ai trouvé les erreurs de mon code et ça fonctionne très bien mais pour un seul fichier source
    comment je peu le modifier pour qu'il soit adéquat a partir de N fichiers sources et le résultat soit dans un seul fichier .txt
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    clc
    clear
    load('C:\aa.mat')
    Conten=who;
    save('C:\\aa.txt',Conten{:},'-ascii')

  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 318
    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 318
    Points : 52 956
    Points
    52 956
    Par défaut
    Tu dois utiliser l'argument -append :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    save('C:\\aa.txt',Conten{:},'-ascii','-append')

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    bonjour
    j'ai modifié mon code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    clc
    clear
    load('C:\workspace\*.mat')
    Conten=who;
    save('C:\workspace\aa.txt',Conten{:},'-ascii','-append')
    mais ça pas fonctionné avec une erreur en load
    ??? Error using ==> load
    Unable to read file C:\workspace\*.mat : Invalid argument.
    Error in ==> descript at 3
    load('C:\workspace\*.mat')
    Qu'est ce que je doit faire

  8. #8
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    tu ne peux pas charger tous les .mat d'un coup avec load('*.mat')il faut que tu récupères les nom de ces .mat avec la fonction dir, puis que tu les charge un par un dans une boucle for

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    voici mon nouveau code :
    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
    clc
    clear
    %l'emplacement de la base
    fichiersapp = dir('C:\workspace\*.mat');
    % nombre de fichier dans la base
    nombreapp = length(fichiersapp);
    %boucle
    for i = 1:nombreapp
        nameapp =getfield(fichiersapp,{i},'name');
        nameappT=strcat('C:\workspace\', nameapp);
        load('C:\workspace\', nameapp);
        Conten=who;
        save('C:\workspace\aa.txt',Conten{:},'-ascii','-append');
     
    end
    et voila les erreurs dégagés
    ??? Error using ==> load
    Unable to read file C:\workspace\: No such file or directory.
    
    Error in ==> descript_all at 11
        load('C:\workspace\', nameapp);

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    nameapp =getfield(fichiersapp,{i},'name');, ou plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nameapp = fichiersapp(i).name;
    nameappT=strcat('C:\workspace\', nameapp);, on préfèrera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nameappT = fullfile('C:\workspace\', nameapp);
    Le problème vient de la ligne load('C:\workspace\', nameapp); : le premier argument passé 'C:\workspace\' correspond au nom du fichier (qui n'en est pas un ici) alors que le second correspond aux noms des variables à charger. Il te suffit de passer directement la variable nameappT qui contient le chemin complet.

    Autre chose : Conten=who; va récupérer toutes les variable présentes : à savoir i, nameapp, nombreapp etc. en plus des variables venant d'être chargées depuis le fichier. Le plus sûr serait soit de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Conten = who('-file', nameappT);
    ou charger le fichier sous forme de structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maStructure = load(nameappT);
    et la passer avec l'option -struct à la fonction save :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    save('C:\workspace\aa.txt', '-struct', 'maStructure', '-ascii', '-append')
    Dernière modification par Invité ; 24/02/2014 à 20h18.

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    bonsoir Mr
    j'ai corrigé les erreurs comme vous avez mentionné mais il ne fonctionne pas encore
    aussi,j'ai pas compris le type de l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Attempt to execute SCRIPT descript_all as a function:
    C:\descript_all.m

  12. #12
    Invité
    Invité(e)

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    salut
    le transfert de données de matlab à un fichier texte a été effectué avec succès
    le fichier contient la description de N fichiers matlab dans un seul fichier texte
    mais le probleme c'est comment séparer les données de chaque fichier.m à part soit par tabulation ou par caractères ( par exemple
    j'ai essayé avec ce code à l’intérieur de boucle mais ça pas fonctionné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     fid = fopen('test.txt','w');
        fprintf(fid,'\t');
        fclose(fid);

  14. #14
    Invité
    Invité(e)
    Par défaut
    La permission fid = fopen('test.txt','w'); efface le contenu du fichier (s'il existe, sinon il est créé).
    Si tu mets cette ligne dans une boucle, tu effaces ton fichier à chaque exécution. La permission 'a' serait plus adaptée ici, si je comprends bien ce que tu souhaites faire... ou sortir l'ouverture/fermeture de ta boucle.

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    merci pour l'aide mais ça pas fonctionné encore
    bah je vous explique mieux
    j'ai trois fichiers a.mat b.mat et c.mat
    j'ai transféré le contenu dans descript.txt
    maintenant je veu séparé la description de chaque fichier avec un ';' tel que ce pseudo modèle
    description de a.mat ; description de b.mat ; description de c.mat;
    sachant que j'utilise la boucle for
    merci d'avance

  16. #16
    Invité
    Invité(e)
    Par défaut
    Même si c'est faux, montre-nous ce que tu as codé afin de bien clarifier les choses.

  17. #17
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    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
    clear
    %l'emplacement de la base
    fichiersapp = dir('C:\Users\dell\Desktop\PFE\issam matlab MFCC\workspace\*.mat');
    % nombre de fichier dans la base
    nombreapp = length(fichiersapp);
    %boucle
    for i = 1:nombreapp
        nameapp =fichiersapp(i).name;
        nameappT=fullfile('C:\Users\dell\workspace\', nameapp);
        load(nameappT);
        Conten=whos('-file', nameappT);
        maStructure = load(nameappT);
        save('C:\Users\dell\workspace\description.txt','-struct', 'maStructure', '-ascii', '-append');
        fid = fopen('description.txt','a');
        fprintf(fid,';');
        fclose(fid);
     
     
     
    end

  18. #18
    Invité
    Invité(e)
    Par défaut
    Il me semble que ce code fait ce que tu attends, ou je ne comprends pas trop ce que tu veux faire...

    Tu parles du format
    description de a.mat ; description de b.mat ; description de c.mat;
    Chacune de tes série de donnée est bien séparée par ton ';' non ?

  19. #19
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    bonsoir
    oui je veux que chaque description sera affiché à part et séparé par ;
    chaque description m'a donné 26 valeurs dc je veu une séparation par ';' entre chaque 26 valeurs

  20. #20
    Invité
    Invité(e)
    Par défaut
    Donc ce n'est pas UN ';' mais autant qu'il a de lignes...
    Comme ceci :
    desc_a_1 ; desc_b_1 ; desc_c_1
    desc_a_2 ; desc_b_2 ; desc_c_2
    ...
    desc_a_26 ; desc_b_26 ; desc_c_26
    Il faut déjà s'assurer que dans tous les cas les descriptions donneront le même nombre de lignes.
    Ensuite tu ne pourras pas le faire de cette façon, il faudra tout stocker puis écrire à la fin de ta boucle.
    Une solution :
    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
    nbLignes = 26;
    desc = zeros(nbLignes,nombreapp);
    for i = 1:nombreapp
        nameapp  = fichiersapp(i).name;
        nameappT = fullfile('C:\Users\dell\workspace\', nameapp);
        maStructure = load(nameappT);
        Conten = who('-file', nameappT);
        desc(:,i) = cell2mat(cellfun(@(field) maStructure.(field)(:), ...
            Conten, 'UniformOutput', false));
    end
     
    fmt = repmat('%f ; ', 1, nombreapp);
    fmt = [fmt(1:end-3) '\n'];
     
    fid = fopen('description.txt','wt');
    fprintf(fid, fmt, desc.');
    fclose(fid);

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/02/2011, 10h15
  2. [VB.net] Convertir Base de données .mdb en fichier Texte
    Par hunteshiva dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/05/2010, 15h04
  3. Convertir des colonnes de données vers un fichier texte
    Par ClaudelMetellus dans le forum Excel
    Réponses: 2
    Dernier message: 28/09/2007, 10h41
  4. extraire certaines données d'un fichier texte
    Par davz88 dans le forum C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h00
  5. Réponses: 3
    Dernier message: 22/02/2004, 21h09

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