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 :

écrire un fichier texte


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut écrire un fichier texte
    Bonjour,

    je dois réaliser un bout de programme qui permet d'écrire un fichier texte où il apparait les noms des fichiers étudiés avec pour chaque fichier les données qu'il contient : valeur moyenne, résultat de l'intégrale,.....
    De façon à ce que l'utilisateur au lieu de tout recopier il n'est plus qu'à imprimer les résultats.
    Comment est ce que je pourrais faire ça?

    Merci

  2. #2
    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,

    par exemple.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Bonjour

    j'ai appliqué et ça marche pour mes 5 fichiers seulement je suis obligé de tout rentrer à la main voir ci dessous

    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
     
     
    //Ecrire dans un fichier texte les résultats obtenus 
    fd=mopen('C:\Users\ZoDa\Documents\programmescilab\recapitulatif','wt');
    mfprintf(fd,'figure1:100pg:\n'); 
    mfprintf(fd,'valeur moyenne=21,245368\n')
    mfprintf(fd,'valeur du maximum=15,26\n')
    mfprintf(fd,'valeur de l integrale:\n')
    mfprintf(fd,'figure2:100pg1:\n'); 
    mfprintf(fd,'valeur moyenne=27,815789\n')
    mfprintf(fd,'valeur du maximum=22 \n')
    mfprintf(fd,'valeur de l integrale:\n')
    mfprintf(fd,'figure3:200pg1:\n'); 
    mfprintf(fd,'valeur moyenne=0,4153578 \n')
    mfprintf(fd,'valeur du maximum=-5 \n')
    mfprintf(fd,'valeur de l integrale:\n')
    mfprintf(fd,'figure4:50pg1:\n'); 
    mfprintf(fd,'valeur moyenne=8,4339623 \n')
    mfprintf(fd,'valeur du maximum=3 \n')
    mfprintf(fd,'valeur de l integrale:\n')
    mfprintf(fd,'figure5:data:\n'); 
    mfprintf(fd,'valeur moyenne=11,60625\n')
    mfprintf(fd,'valeur du maximum=213,63\n')
    mfprintf(fd,'valeur de l integrale:\n')
    mclose(fd)
    Mon problème est qu 'au final il n'y aura pas 5 fichiers.
    Il y en aura beaucoup plus

    Dans ma boucle j'ai donc mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    for i= 1:length(liste)

    liste est le fichier qui contient tous mes fichiers textes.
    Ainsi l'utilisateur pourra rajouter autant de fichier qu'il veut.
    Comment est ce que je pourrais faire? Pour qu'il m'ouvre à chaque fois les fichiers et qu'il écrive les informations(voir ci dessus). Sans avoir à tout rentrer à la main?

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

    Voici un petit exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    moyenne = 27,815789;
    mprintf('valeur moyenne = %f\n',moyenne)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    bonjour

    J'ai fait comme tu m'as dit et ça marche seulement pour le dernier fichier. c'est à dire sur mon fichier n'apparaisse seulement les informations du dernier fichier.
    Comment je pourrais faire pour qu'il apparaisse le nom de chaque fichier avec pour chaque ses informations respectifs.
    Je te met le bout de programme pour que tu vois mieux

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    
    //lecture du fichier au format texte
    clear
    rep='C:\Users\ZoDa\Documents\programmescilab\fichiers';
    ext='*.txt';
    chemin=fullfile(rep,ext);
    liste=dir(chemin);
    //nomfichier='data.txt'
    //A=read(liste.name(1),-1,2);
    //end
    
    for i=1:size(liste.name,1),
      try
      Macellule(i).entries=read(liste.name(i),-1,2);
      catch
      end
    end;
    
    for i=1:length(liste),
    figure(i);
    A=Macellule(i).entries;
    //Vecteurs temps et pics
    temps=(A(:,1)/1000);
    pic=A(:,2);
    //Sélection des n derniers points du pic 
    n=513;
    npic=length(pic);
    //f=pic(npic-n+1:npic);
    f=pic(npic-n+1:npic);
    t=temps(1:n);
    dt=mean(diff(t));
    
    //Détermination de la ligne de base
    [maxf,indmax]=max(f);
    fond = mean(f(1:indmax-70));
    f = f-fond;
    
    // Détection automatique de l'ind
    [m,k]=max(A(:,2));
    temps1=temps(k+250:length(pic));
    pic1=pic(k+250:length(pic));
    
    // Calcul de l'aire du pic
    // 1 - Formule des trapèzes
    ift = ((f(1)+f(n))/2 + sum(f(2:n-1)))*dt;
    //ift = ((f(1)+f(n))/2 + sum(f(2:n)))*dt;
    //disp('Intégration du pic (formule des trapèzes)');
    //disp(ift)
    
    // Affichage
    subplot(2,2,1)
    plot2d(temps,pic+6,style=[color("red")],axesflag=1,rect=[1,-8,max(temps),max(pic)+10])
    
    //Marquer le début de la zone  
    plot(temps1,pic1+6,'b')
    l=legend(['Courbe Original';'continium'])
    xtitle(liste.name(i),'Temps (s)')
    
    //Appliquation du filtre pour enlever les parasites 
    [m,k1]=max(A(:,2))
    Amodif=zeros(size(A,1));
    Amodif(1:k1-250-1)=A(k1-250,2);
    Amodif(k1-250:k1+250)=A(k1-250:k1+250,2);
    Amodif(k1+250+1:length(pic))=A(k1+250,2);
    
    //Détection automatique de l'ind
    [m,k]=max(A(:,2));
    temps1=[];
    Amodif1=[];
    temps1=temps(k+250+1:length(pic));
    //pic1=pic(k+250:length(pic));
    //temps1=temps(k+250+1:length(pic));
    Amodif1(1:length(temps1))=A(k+250,2);
    
    //Définition de la moyenne 
    //disp(mean(pic(k+250:length(pic))))
    //disp(mean(pic(k-250:length(pic))))
    //disp(mean(pic(1:length(pic)))-mean(pic(k+250:length(pic))))
    disp(mean(pic(k+250:length(pic)))+6);
    
    // Affichage
    subplot(2,2,2)
    plot2d(temps,Amodif+6,style=[color("red")],axesflag=1,rect=[1,-8,max(temps),max(pic)+10])
    xtitle(liste.name(i),'Temps (s)')
    //plot2d(temps,Amodif,style=[color("red")],axesflag=1,rect=[1,0,max(temps),max(pic)+10])
    
    //Marquer le début de la zone  
    plot(temps1,Amodif1+6,'b')
    l1=legend(['Courbe Corrigé';'Continium'])
    //plot(temps1,pic1,'b')
    //l1=legend(['Courbe Corrigée';'Quantinium');
    
    subplot(2,2,3)
    plot(t,zeros(f),'b')
    plot2d(t,f,style=[color("red")],rect=[1,-1,max(t),maxf+10])
    xtitle(liste.name(i),'Temps (s)')
    hl = legend(['Ligne de base';'f(t)']);
    
    subplot(2,2,3)
    plot(t,zeros(f),'b')
    //end;
    // Calcul de l'aire du pic
    // 1 - Formule des trapèzes
    //ift = ((f(1)+f(n))/2 + sum(f(2:n-1)))*dt;
    //disp('Intégration du pic (formule des trapèzes)');
    //disp(ift)
    
    subplot(2,2,3)
    plot(t,zeros(f),'b')
    plot2d(t,f,style=[color("red")],rect=[10,-10,max(t),maxf+10])
    hl = legend(['Ligne de base';'f(t)']);
    
    //subplot(2,2,3)
    //plot(t,zeros(f),'b')
    
    //Ecrire dans un fichier texte les résultats obtenus 
    
    fd=mopen('C:\Users\ZoDa\Documents\programmescilab\recapitulatif','wt');
    titre=fd;
    mfprintf(fd,'nom du fichier = %t\n',titre);
    moyenne=mean(pic(k+250:length(pic)))+6;
    mfprintf(fd,'valeur moyenne = %f\n',moyenne);
    integrale=ift;
    mfprintf(fd,'valeur intégrale=%f\n',integrale);
    mclose(fd);
    J'ai un deuxième souci je voudrais faire apparaître pour chaque fichier son titre (voir en rouge ) mais je n'y arrive pas.

    j'ai aussi essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    titre=liste.name(i);
    mfprintf(fd,'nom du fichier = %f\n',titre);
    voilà l'erreur qui me dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mfprintf(fd,'nom du fichier = %f\n',titre);
                                               !--error 246 
    Fonction non définie pour le type d'argument donné.

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

    As-tu regardé la doc de la fonction?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mfprintf(fd,'nom du fichier = %s\n',titre);
    Je t'ai fait un exemple avec un float, d'où le %f
    Mais lorsque tu veux écrire un string, il faut utiliser %s
    Tu pourras voir dans la doc les autres formats disponibles parmi entiers...

    Ensuite, pour le fichier final (si j'ai bien compris qu'il n'y en avait qu'un relatant de tous les fichiers de départ), tu peux faire comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //lecture du fichier au format texte
    ...
    fd=mopen('C:\Users\ZoDa\Documents\programmescilab\recapitulatif.txt','wt');
    for i=1:size(liste.name,1),
        // traitement du fichier i
        ...
        //Ecrire dans un fichier texte les résultats obtenus
        mfprintf(fd,'nom du fichier = %s\n',liste.name(i));
        mfprintf(fd,'valeur moyenne = %f\n',mean(pic(k+250:length(pic)))+6);
        mfprintf(fd,'valeur intégrale=%f\n',ift);
    end
    mclose(fd);

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Merci ca fonctionne.

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

Discussions similaires

  1. Lire et écrire des fichiers textes colonnés
    Par coolpix77 dans le forum Général Python
    Réponses: 5
    Dernier message: 02/09/2014, 15h59
  2. [XL-2003] écrire dans fichier texte
    Par Mrfreeze117 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 06/02/2012, 17h05
  3. Lire et écrire un fichier texte
    Par anautilisateur dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 12/07/2011, 20h11
  4. Comment écrire un fichier texte au format MS-DOS ?
    Par thierrybo dans le forum Débuter
    Réponses: 2
    Dernier message: 21/07/2009, 13h37
  5. Comment écrire un fichier texte au format MS-DOS ?
    Par fredfred dans le forum Langage
    Réponses: 9
    Dernier message: 20/01/2005, 09h00

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