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 :

Ecriture dans un fichier txt


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 61
    Points : 35
    Points
    35
    Par défaut Ecriture dans un fichier txt
    Bonjour;

    j'ai fait le programme suivant qui permet de mettre la valeur de i dans un fichier qui s'appelle valk.txt cette valeur je veux l'utiliser dans un autre programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for  i=1:N
     
        c=i   
        fid=fopen('valk.txt','w');
        fprintf(fid,'%i\n',c);
        fclose(fid)
    end
    mais lorsque j'ouvre le fichier kval.txt je le trouve vide "sans aucune valeur ",j'ai essayé le programme précedent sans boucle tout en donnant une valeur à i ,ce dernier a donné des bon résultats.

    est ce que quelqu'un peut m'aider?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Il faut ouvrir et fermer le fichier en dehors de la boucle. De plus, pour que les caractères comme le retour à la ligne soient pris en compte, il faut rajouter un t au mode d'ouverture du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fid=fopen('valk.txt','wt');
    for  valeur=1:N
        fprintf(fid,'%a\n',valeur);
    end
    fclose(fid)
    L'utilisation de i comme variable est déconseillée puisque cela correspond à une des constantes de matlab.

  3. #3
    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
    salut,

    Avec tu code tu vide le fichier à chaque fois que tu l'ouvre.
    Essayes 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
    % Solution 1 : 
    % Ajouter en plus du contenu du ficher
    for  i=1:10
        c=i   
        fid=fopen('valk.txt','a+');
        fprintf(fid,'%i\n',c);
        fclose(fid)
    end
    
    % Solution 2 :
    % Faire un seul FOPEN
    % je prefere celle-la
    
    fid=fopen('valk.txt','w');
    for  i=1:10
        c=i   
        fprintf(fid,'%i\n',c);
    end
    fclose(fid)
    ++

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    en effet,mon cas je prèfère à chaque valeur de la boucle vider mon fichier et la remplacer par la nouvelle valeur:

    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
    t1i=30*pi/180;
    t2i=0*pi/180;
    t3i=-70*pi/180;
    t4i=20*pi/180;
     
     
    for  va=1:N
     
         fid=fopen('valk.txt','a+');
        c=va;  
     
        fprintf(fid,'%i\n',c);
        fclose(fid);
     
        lb=[(-pi/180)+t1i,(-pi/180)+t2i,(-pi/180)+t3i,(-pi/180)+t4i];
        ub=[(pi/180)+t1i ,(pi/180)+t2i ,(pi/180)+t3i ,(pi/180)+t4i];
     
        t0=[(-pi/180)+t1i,(-pi/180)+t2i,(-pi/180)+t3i,(-pi/180)+t4i];
        options = optimset('LargeScale','off');
     
        [t,D] =fmincon(@fctobj,t0,[],[],[],[],lb,ub,@fctcon,options)
     
        t1i=t(1);
        t2i=t(2);
        t3i=t(3);
        t4i=t(4);
    end
    en fait la valeur de "va" est utilisée dans le fichier fctcon.m "la fonction contrainte" de fmincon,c'est pour cette raison j'ai besoin d'utiliser que la nouvelle valeur de "va" et supprimer l'ancienne.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 311
    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 311
    Points : 52 902
    Points
    52 902
    Par défaut
    Il FAUT prendre l'habitude d'utiliser l'argument "t" de FOPEN quand on travaille sur des fichiers txt.


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

Discussions similaires

  1. Problème de lecture/ecriture dans un fichier txt
    Par fraid49 dans le forum Général Python
    Réponses: 6
    Dernier message: 20/11/2008, 11h32
  2. Ecriture dans un fichier txt avec C++
    Par altera14 dans le forum C++
    Réponses: 4
    Dernier message: 17/06/2008, 10h57
  3. Ecriture dans un fichier .txt
    Par aquarius85 dans le forum MATLAB
    Réponses: 5
    Dernier message: 03/03/2008, 08h28
  4. ecriture dans un fichier txt
    Par warubi dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/06/2007, 11h07
  5. Réponses: 8
    Dernier message: 07/09/2006, 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