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 :

Lecture avec plusieurs colonnes


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 67
    Par défaut Lecture avec plusieurs colonnes
    Bonjour,

    J'ai un fichier texte qui se presente ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Cycle;Row;Col;Direction;E  ;F   ;
      .na0;  1;  1;        X; -7; -31;
      .na0;  1;  1;        Y;  6; -32;
      .na0;  1;  5;        X; -5; -33;
      .na0;  1;  5;        Y;  6; -34;
      .na0;  1;  9;        X; -3; -35;
      .na0;  1;  9;        Y;  6; -36;
    J aimerais recuperer les donnees non pas par colonne, donc pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [E{1:5}]=textread('essai.txt,'%s %n %n %*s %n %n','delimiter',';','headerlines',1);
    mais ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CycleX={.na0 .na0 .na0};
    CycleY={.na0 .na0 .na0};
    RowX=[1 1 1];
    RowY=[1 1 1];
    ColX=[1 5 9];
    ColY=[1 5 9];
    EX=[-7 -5 -3];
    EY=[6 6 6];
    FX=[-31 -33 -35];
    FY=[-32 -34 -36];
    C est un peu comme si on lisait une fois sur 2,sauf qu il y a deúx fois plus de colonnes.J espere que vous aurez une idee, je vous remercie d avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    On peut tout à fait utiliser TEXTREAD ici.

    Il suffit de tout lire dans le tableau de cellules et ensuite seulement d'en extraire les données nécessaires dans les bonnes variables.

    Sinon, je ne vois que les routines de bas niveau pour lire ce fichier :

    http://www.mathworks.com/support/tec.../1602.html#low

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 67
    Par défaut
    Ok merci j'ai fait comme tu as dit: j'ai lu le fichier avec textread et ensuite j'ai modifie ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function [Essai] = Essai (File)
    [E{1:5}]=textread(File,'%s %n %n %*s %n %n','delimiter',';','headerlines',1);
    e.Cycle = E{1}; ....
    Essai.CycleX = [e.Cycle(1),e.Cycle(3),e.Cycle(5)]';....
    Par contre maintenant j ai une autre question a propos de ma derniere ligne, j'aurais aime remplir la structure avec une boucle for. J'ai essaye de faire comme pour un tableau mais ca ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    N=2;
    for i=0:1:N                                                                    
        Essai.CycleX(i)=[e.Cycle(2i+1)]';
    end
    et je n'ai pas trouve d'info dans l'aide sur les structures ou cell array. Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par hidies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    N=2;
    for i=0:1:N                                                                    
        Essai.CycleX(i)=[e.Cycle(2i+1)]';
    end
    D'abord, l'indexage commence à 1 sous Matlab.

    Ensuite, je ne vois pas très bien ce que tu cheches à faire.
    Peut-on avoir un exemple simple avec des valeurs numériques simples ?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 67
    Par défaut
    Voici un exemple de fichier ('lettre.txt') :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A ;B ;C ;
     
    1 ; 2; 3;
    4 ; 5; 6;
    7 ; 8; 9;
    10;11;12;
    . Je souhaite pour chaque colonne obtenir une valeur sur 2, voici mon code avec ce qu on obtient :
    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
    function [Lettre] = Lettre (File) 
     
    % Lecture du fichier 'lettre.txt'
    [L{1:3}] = textread(File, '%n %n %n','delimiter',';','headerlines',2); 
     
    % Lecture des colonnes A(1 4 7 10), B(2 5 8 11) et C(3 6 9 12)
    x.A=L{1};
    x.B=L{2};
    x.C=L{3};
     
    % Lecture de la colonne A 1 fois sur 2 : A1(1 7) et A2(4 10)
    Lettre.A1=[x.A(1),x.A(3)]';
    Lettre.A2=[x.A(2),x.A(4)]';
     
    % De meme pour B : B1(2 8) et B2(5 11)
    Lettre.B1=[x.B(1),x.B(3)]';
    Lettre.B2=[x.B(2),x.B(4)]';
     
    % De meme pour C : C1(3 9) et C2(6 12)
    Lettre.C1=[x.C(1),x.C(3)]';
    Lettre.C2=[x.C(2),x.C(4)]';
    Cela fonctionne mais ma question est comment peut on faire une boucle for sur cette structure pour eviter de rentrer tous les numeros d indices des cellules mais uniquement le numero de la premiere cellule et de la derniere ? Par exemple j'ai essaye de faire pour A1 et A2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Lettre.A1=[x.A(1:2:3)]';
    Lettre.A2=[x.A(2:2:4)]';
    mais ca ne marche pas donc je cherchais un autre moyen. Voila j espere que c est plus clair, merci.

  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 317
    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 317
    Par défaut
    Je te conseille de lire la documentation sur les tableaux de cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function [Lettre] = Lettre (File) 
     
    % Lecture du fichier 'lettre.txt'
    [L{1:3}] = textread(File, '%n %n %n','delimiter',';','headerlines',2); 
     
    Lettre.A1=L{1}(1:2:end);
    Lettre.A2=L{1}(2:2:end);
     
    Lettre.B1=L{2}(1:2:end);
    Lettre.B2=L{2}(2:2:end);
     
    Lettre.C1=L{3}(1:2:end);
    Lettre.C2=L{3}(2:2:end);
    De plus, évites de donner le même nom à tes fonctions et à tes variables (Lettre)

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

Discussions similaires

  1. [ComboBox] Combobox avec plusieurs colonnes
    Par madica dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/01/2007, 11h25
  2. Combo avec plusieurs colonnes (layout?)
    Par spirodeau dans le forum Struts 1
    Réponses: 5
    Dernier message: 04/08/2006, 08h22
  3. vba, listbox avec plusieur colonne
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/06/2006, 18h35
  4. liste deroulante avec plusieurs colonnes?
    Par zorba49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/06/2006, 12h08
  5. Réponses: 1
    Dernier message: 04/05/2005, 11h43

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