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 :

Problème de boucle dans un programme


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Problème de boucle dans un programme
    Bonjour, j'essaie de faire un petit programme pour aller chercher des données numériques dans plusieurs fichiers afin de le remettre dans le même tableau, calculer des moyennes, écarts-types, faire des courbes...

    J'ai un souci car je charge par exemple 5 fichiers et j'aimerais que la partie en rouge soit exécuter pour chacun des fichiers chargés afin d'obtenir les données du 1er fichier en colonne 1 de ma variable, les données du 2nd fichier en colonne 2....

    Voici mon bout de code...

    Merci d'avance.


    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
     %------------- Chargement des fichiers .anc -----------------------------
        [filename, pathname]=uigetfiles('*.anc', 'Charger le Fichier ANC');     %lance la fonction permettant de connaître le chemin d'acces pour la lecture
    
    for f=1:max(size(filename));     %début boucle 1
            T=[];       %créer ou vider la variable
            D=[];       %créer ou vider la variable
            name1=strcat(pathname,filename{f});     % écriture d'une chaîne de caractères : nom de la variable
            %------------- Séparation du Texte et des données -----------------------
            disp ('lecture du fichier')
            [T D]=hdrload(name1);       % creer T (parite texte) et D (partie data) du fichier name1
            %-----------------------------------------------------------------
            RFL=[];
            RFL(:,f)=D(:,14);
            RFR=[];
            RFR(:,f)=D(:,15);
            VEL=[];
            VEL(:,f)=D(:,16);
            VER=[];
            VER(:,f)=D(:,17);
    end

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Si je comprend bien , il te suffit de ne pas vider tes matrice.
    En fait, t'es sur que le nombre ligne est le même dans tous les fichiers ?

    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
    24
    25
    %------------- Chargement des fichiers .anc -----------------------------
    [filename, pathname]=uigetfiles('*.anc', 'Charger le Fichier ANC'); %lance la fonction permettant de connaître le chemin d'acces pour la lecture
    
    RFL=[];
    RFR=[];
    VEL=[];
    VER=[];
    
    
    for f=1:max(size(filename)); %début boucle 1
    T=[]; %créer ou vider la variable
    D=[]; %créer ou vider la variable
    name1=strcat(pathname,filename{f}); % écriture d'une chaîne de caractères : nom de la variable
    %------------- Séparation du Texte et des données -----------------------
    disp ('lecture du fichier')
    [T D]=hdrload(name1); % creer T (parite texte) et D (partie data) du fichier name1
    %-----------------------------------------------------------------
    
     RFL(:,f)=D(:,14);
     RFR(:,f)=D(:,15);
     VEL(:,f)=D(:,16);
     VER(:,f)=D(:,17);
    
    end
    ++
    AlloSchool, votre école sur internet.

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci mr_samourai pour cette réponse.
    Chaque colonne n'aura pas le même nombre de ligne. Puis-je déterminer un nombre de ligne énorme (10 000lignes par exemple) afin d'être sur que mes données ne dépassent pas le nombre de lignes?

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    La deuxième solution est d'utiliser des cellules à la place de matrices :


    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
    24
    25
    %------------- Chargement des fichiers .anc -----------------------------
    [filename, pathname]=uigetfiles('*.anc', 'Charger le Fichier ANC'); %lance la fonction permettant de connaître le chemin d'acces pour la lecture
    
    tmp = max(size(filename));
    RFL=cell(tmp,1);
    RFR=cell(tmp,1);
    VEL=cell(tmp,1);
    VER=cell(tmp,1);
    
    
    for f=1:max(size(filename)); %début boucle 1
    T=[]; %créer ou vider la variable
    D=[]; %créer ou vider la variable
    name1=strcat(pathname,filename{f}); % écriture d'une chaîne de caractères : nom de la variable
    %------------- Séparation du Texte et des données -----------------------
    disp ('lecture du fichier')
    [T D]=hdrload(name1); % creer T (parite texte) et D (partie data) du fichier name1
    %-----------------------------------------------------------------
    
     RFL{f}=D(:,14);
     RFR{f}=D(:,15);
     VEL{f}=D(:,16);
     VER{f}=D(:,17);
    
    end
    ++
    AlloSchool, votre école sur internet.

Discussions similaires

  1. Problème d'éxecution dans mon programme
    Par mouchT8 dans le forum C
    Réponses: 8
    Dernier message: 16/05/2008, 01h36
  2. Problème de sortie dans un programme.
    Par IDE dans le forum C
    Réponses: 8
    Dernier message: 20/05/2007, 18h21
  3. Problème d'angle, dans un programme 3D
    Par Archaoniro dans le forum Moteurs 3D
    Réponses: 3
    Dernier message: 11/08/2006, 09h07
  4. Réponses: 8
    Dernier message: 23/03/2006, 19h30
  5. [Debutant] Problème de fraction dans un programme
    Par SAKDOSS dans le forum Débuter
    Réponses: 4
    Dernier message: 22/10/2005, 18h38

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