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 :

ajouter des lignes dans un fichier texte


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut ajouter des lignes dans un fichier texte
    Bonjour;

    1-j'aimerai sauvegarder des résultats dans un fichier texte pour chaque image j'ai 27 lignes et 4 colonnes, pour un simple test j'ai fais le code en dessous par contre mes resultats sont sauvagrdes en colonne et pas en ligne, je sais que matlab sauvegarde en colonne comme fortran mais je sais pas comment régler ce probleme

    2- mon deuxième problème c'est que je dois faire l'execution 27 fois ( car changements de paramètres pour chaque image) donc je'aimerai recuperer le fichier txt avec les anciens résultats, mais dans mon code la ligne est écrasée et est remplacée par les nouveaux résultats.
    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 all;
    a=2;
    b=10;
    c=3;
    d=4;
    e=4+5;
    f=e+e;
    v=[a b c d e f]
     
    for i=1:4
    for j=1:4
    M(1,j)=v(j);
    j=j+1;
    end
    i=i+1;
    fid = fopen('D:\images\t.txt','wt');
    fprintf(fid,'%s\n','M');
    fprintf(fid,'%i\t %i\t %i\t %i\t %i\t %i\n',M);
     fclose(fid);
    end
    j'ai penser a une autre solution , c'est a dire de tout sauvegarder sur une matrice et ajouter les résultats

  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 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Essaie ceci :

    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
    clc;
    clear all;
    a = 2;
    b = 10;
    c = 3;
    d = 4;
    e = 4+5;
    f = e+e;
    v = [a b c d e f]
     
    fid = fopen('D:\images\t.txt', 'wt');
    fprintf(fid, '%s\n', 'M');
     
    for i = 1:4
     
       for j = 1:6
          M(1,j) = v(j);
       end
     
       fprintf(fid, '%i\t%i\t%i\t%i\t%i\t%i\n', M);
     
    end
     
    fclose(fid);
    Ou encore :
    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
    clc;
    clear all;
    a = 2;
    b = 10;
    c = 3;
    d = 4;
    e = 4+5;
    f = e+e;
    v = [a b c d e f]
     
    fid = fopen('D:\images\t.txt', 'wt');
    fprintf(fid, '%s\n', 'M');
     
    for i = 1:4
     
       for j = 1:6
          M(i,j) = v(j);
       end
     
    end
     
    fprintf(fid, '%i\t%i\t%i\t%i\t%i\t%i\n', M.');
     
    fclose(fid);
    Citation Envoyé par eviasra Voir le message
    je sais que matlab sauvegarde en colonne comme fortran mais je sais pas comment régler ce probleme
    À lire : Quand MATLAB et fprintf ne regardent pas dans la même direction…
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    bonjour jerome

    problème résolu, voila ce 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    clc;
    clear all;
    a=2;
    b=10;
    c=10;
    d=8;
    e=4+5;
    f=e+e;
    v=[a b c d e f]
    v1=[f e d c b a]
    v2=v1'
    M=zeros;
      for i=1:4
    for j=1:4
    M(1,j)=v(j);
    j=j+1;
    end
    i=i+1;
      end
     
     %-----------
    %enregistrer les resultats
    if exist('D:\images\t5.txt','file')~=7
        fid=fopen('D:\images\t5.txt','a+');
           if fid ==-1;
       errordlg(['File: can not be recreated']);
    return;
     
        else
        fprintf(fid,'%i\t %i\t %i\t %i\t\r\n',M.');
        fclose(fid);
        end
    end
    %---
    ce qui me reste maintenant c'est d'ajouter 7 colonnes de paramètre pour mon résultats

    mon résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    2	 10	 10	 6	
    2	 10	 10	 6	
    2	 10	 10	 6
    j'aimerai ajouter les colonnes suivantes a droite sc=20:40:100; comp=0.1:0.4:0.9; color=0.1:0.4:0.9, b1=1,b2=b,b3=1,b4=1

    et donc pour chaque ligne j'aurai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    20 0.1 0.1 1 1 1 1  2 10 10 6
    20 0.1 0.5 1 1 1 1  2 10 10 6
     20 0.1 0.9 1 1 1 1  2 10 10 6

  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 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Plusieurs points à corriger avant d'aller plus loin

    Tu n'as pas à t'occuper de l’incrémentation des variable i et j à l'intérieur des boucles for-end :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i = 1:4
       for j = 1:4
          j = j+1;
       end
    i = i+1;
    end
    La valeur renvoyée par exist pour tester l'existence d'un fichier est 2 et non pas 7 (dossier)

    Tu peux te contenter du mode d'ouverture 'wt' plutôt que 'a+' avec fopen

    Les crochets sont inutiles à la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    errordlg(['File: can not be recreated']);
    Les variables v1 et v2 ne servent à rien

    Il y a des espaces inutiles dans le formatage utilisé avec fprintf (puisque tu utilises des tabulations '\t')

    Pour finir, pense à indenter correctement ton code en utilisant les combinaisons de touche Ctrl+A et Ctrl+I dans l'éditeur de MATLAB.

    Montre nous ton code corrigé et nous verrons ce que tu cherches à faire ensuite…
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    Merci, voila aprés quelques corrections j'ai obtenu dans mon fichier texte que le dernier résultat il me garde pas les autres résultas


    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
    26
    27
    28
    29
    clc;
    clear all;
    a=2;
    b=11;
    c=10;
    d=8;
    e=4+5;
    f=e+e;
    v=[a b c d e f]
    M=zeros;
    for i=1:4
        for j=1:4
            M(1,j)=v(j);
     
        end
    end
    %-----------
    %enregistrer les resultats
    if exist('D:\images\test8.txt','file')~=2
        fid=fopen('D:\images\test8.txt','wt');
        if fid ==-1;
            errordlg('File: can not be recreated');
            return;
     
        else
            fprintf(fid,'%i\t %i\t %i\t %i\t\r\n',M.');
            fclose(fid);
        end
    end

    je voudrai obtenir ça 2 10 10 6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    2	 10	 10	 6	
    2	 10	 10	 6	
    2	 10	 10	 6	
    2	 10	 10	 6	
    2	 10	 10	 6
    ce code est juste un test, ce que je fais exactement c'est de changer les paramètres d'entrées et mettre le résultat dans un fichier texte avec 27 lignes et 11 colonnes

    pour ce fait j'ai ajouter ça je sais que c'est pas la solution optimale mais ça a marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    %concatener les 2 matrices
    [num, txt, tab] = xlsread('D:\images\Classeur1.xlsx');
    [num1, txt, tab]= xlsread('D:\images\test1.xlsx');
    c=[num num1];
    j'ai sauvegarder mes paramètres d'entrée dans un fichier excel auquel je fais appel

  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 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Citation Envoyé par eviasra Voir le message
    que le dernier résultat il me garde pas les autres résultas
    Regarde bien cette ligne :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    oui oui , l'idée c'est d'ajouter cette ligne a mon ancien fichier, avec le code que j'ai poster en 1er ça a marcher

  8. #8
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    bonjour

    une question peut etre toute bête mais que je passe assez de temps avec voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for s=20:40:100
        for col=0.1:0.4:0.9
            for comp=0.1:0.4:0.9
                t=[s;col;comp]
            fid=fopen('d:\images\sousou.txt','wt');
            fprintf(fid,'%f %f %f\t\r\n',t);
            end
        end
    end
    je voudrai avoir dand mon fichier texte 3 colonnes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    s  col  com
    20 0.1 0.1
    20 0.5 0.1
    20 0.9 0.1
    60 0.1 0.1
    ..  .... ....
    mais tous ce que j'obtiens pour le moment c'est


    l'objectif c'est de coller ce fichier texte avec un autre qui contiendra les résultats pour chaque ligne de paramètres, pour cela j'ai penser a une deuxième solution qui est de créer un Seul fichier texte une fois pour toute alors j'aurai ceci:
    s col comp res1 res2
    20 0.1 0.1 4 5

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    La documentation de fopen dit au sujet de l'argument permission 'w' :
    Open or create new file for writing. Discard existing contents, if any.
    La deuxième phrase signifie que le contenu existant est supprimé à l'ouverture du fichier.

    Tu dois donc sortir le fopen des boucles et ne pas oublier de fermer le fichier avec fclose :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fid = fopen('d:\images\sousou.txt','wt');
    for s = 20:40:100
        for col = 0.1:0.4:0.9
            for comp = 0.1:0.4:0.9         
                fprintf(fid, '%f %f %f\n', s, col, comp);
            end
        end
    end
    fclose(fid);
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  10. #10
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    Merci jérome, tu m'aide beacoup

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/06/2011, 17h35
  2. Renplacer des lignes dans un fichier texte
    Par timmy1 dans le forum Général VBA
    Réponses: 1
    Dernier message: 18/10/2010, 00h19
  3. Supprimer des lignes dans un fichier texte
    Par zakmakaay dans le forum MATLAB
    Réponses: 6
    Dernier message: 09/12/2009, 20h17
  4. Ajouter des lignes dans un fichier *.log
    Par Fred2209 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/12/2006, 15h15

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