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 :

importation de plusieurs fichiers .txt [Débutant]


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut importation de plusieurs fichiers .txt
    Bonjour,

    Je suis novice ...

    je souhaiterai importer de nombreux fichier.txt dont le nombres de colonnes sera fixe mais avec un nombres de lignes variables. A partir des ces fichiers, j'aimerai créer une matrice contenant la colonne n°41 (par exemple) (sans l'entete de la colonne) de chacun de ces fichiers.

    J'ai essayé importdata, load, textread, mais je n'arrive jamais à avoir mes fichiers initiaux, soit je n'ai que les 3 première colonnes, soit les 8 dernières.

    Ci joint un extrait de ces fichiers initiaux.
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt L.txt (16,0 Ko, 314 affichages)

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2012
    Messages : 95
    Points : 150
    Points
    150
    Par défaut
    Avec textscan normalement tu devrais t'en sortir genre quelque chose comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    info_adresse=fopen('ton_adresse');                                               
     
    B = textscan(info_adresse,'%f %f %f','delimiter','\n');
    avec autant de %f que de colonnes (3 colonnes ici donc)
    Par contre, ici l'entête n'est pas supprimée et ce ne sont que des nombres dans mes colonnes donc tu as surement un peu d'adaptation à faire
    Ma version Matlab:Matlab R2011b

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Mes .txt presentaient des nombre décimaux avec des virgule et non des points, j'ai maintenant changer ceci donc, j'ai bien des points a la places des virgules.
    Cependant, quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    fnam='LA.txt'; % <- your data as shown above
    r=textread(fnam,'%s','delimiter',''); 
    r=cellfun(@(x) sscanf(x,'%f').',r,'uni',false); % <- note: transpose
    r=cat(1,r{:});
    disp(r);
    Je me retrouve avec des colonnes qui ne ressemblent pas à mon fichier initial, j'ai plein de -0.0000 ou 0.0005 au lieu de -1 ou de 0.

    Si quelqu'un a eu ce problème?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ceci n'est qu'un "problème" d'affichage (Cf Pourquoi MATLAB affiche-t-il des valeurs tronquées ?)

    Sinon pour la lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fnam='LA.txt';
    fid = fopen(fnam,'rt');
        r = textscan(fid,repmat('%f ',1,58),'delimiter','\t','HeaderLines',1,'collectOutput',true)
    fclose(fid);
    ou avec importdata comme tu as mentionné, mais qui devrait dorénavant marcher.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Merci pour cette aide très claire.

    J'ai essayé d'appliquer la partie du code que vous m'avez donné mais j'obtiens comme réponse :
    r =

    [4270x58 double]

    et pas de matrice avec toutes mes colonnes. Je n'arrive pas à trouver la raison.

    Merci beaucoup de votre aide

  6. #6
    Invité
    Invité(e)
    Par défaut
    Tu obtiens bien ta matrice, mais dans un tableau de cellules


  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Merci beaucoup de répondre même a des questions idiotes!

    J'aimerai maintenant mettre ces matrices (issues des fichiers .txt) les unes derrière les autres pour créer un tableau en 3D. Cependant, les matrices ont le même nombres de colonnes mais pas le même nombres de lignes.
    en essayant sur 3 petites matrices de tailles différentes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A=[1 2 3;4 5 6];
    B=[11 22 33;44 55 66;88 99 77; 45 56 69];
    C =[1 5 9;3 8 9; 7 5 3];
    H(1,:,:)=A;
    H(2,:,:)=B; 
    H(3,:,:)=C;
    j'obtiens une erreur :
    ??? Subscripted assignment dimension mismatch.
    J'ai aussi voulu essayer la fonction cat(3, A, B, C) et le message d'erreur est le suivant :
    CAT arguments dimensions are not consistent.
    J'en conclus que cela n'est pas possible sur les matrices initiales si elles n'ont pas les même dimensions. Est ce que quelqu'un aurait une solution.

    Si je dois créer une autre discussion dites le moi.
    Je vous remercie de votre patience.

  8. #8
    Invité
    Invité(e)
    Par défaut
    A, B et C n'étant pas de même dimension, tu ne peux pas faire cela.

    Voir IV-A. Concaténation.

    Ainsi que la CAT arguments dimensions are not consistent. et Subscripted assignment dimension mismatch.

    L'utilisation d'un tableau de cellules pourra résoudre ce problème (ceci en particulier). N'hésite pas à parcourir le forum

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Super merci beaucoup!

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

Discussions similaires

  1. [XL-2010] Importations depuis plusieurs fichiers .txt
    Par j.klein dans le forum Excel
    Réponses: 11
    Dernier message: 27/03/2015, 12h03
  2. Importation de plusieurs fichiers .txt
    Par jerome_coliposte dans le forum SAS Base
    Réponses: 4
    Dernier message: 14/02/2013, 11h30
  3. Réponses: 28
    Dernier message: 10/05/2012, 11h18
  4. Importation d'un fichier .txt dans plusieurs tables ?
    Par benooiit dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 23/07/2007, 08h14
  5. Réponses: 2
    Dernier message: 26/01/2007, 14h58

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