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 d'une matrice de taille quelconque dans un fichier


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut Ecriture d'une matrice de taille quelconque dans un fichier
    Bonjour j'ai un petit souci pour imprimer correctement une matrice dans un fichier.
    Ce que j'ai a faire est tout bete mais y a un truc que je comprends pas.

    Je lis et charge une matrice dans D a partir d'un fichier. Je bidouille D, qui est du genre 2000x2, et ensuite j'utilise ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fid=fopen(fid,FichierOut);
    fprintf(fid,'%g',D);
    fclose(fid)
    Le hic c'est que ca imprime toutes les valeurs a la suite, sans tabulation et pas sur deux jolies colonnes. J'arrive pas a trouvé dans l'aide où est-ce que c'est...

    A votre bon coeur

  2. #2
    Membre actif Avatar de LordPeterPan2
    Inscrit en
    Février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Citation Envoyé par loique Voir le message
    Bonjour j'ai un petit souci pour imprimer correctement une matrice dans un fichier.
    Ce que j'ai a faire est tout bete mais y a un truc que je comprends pas.

    Je lis et charge une matrice dans D a partir d'un fichier. Je bidouille D, qui est du genre 2000x2, et ensuite j'utilise ceci

    Le hic c'est que ca imprime toutes les valeurs a la suite, sans tabulation et pas sur deux jolies colonnes. J'arrive pas a trouvé dans l'aide où est-ce que c'est...

    A votre bon coeur
    J'ai pas essayé mais remplace la ligne en fprinf par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fprintf(fid,'%g %g\n',D);
    Ils ne savaient pas que c’était impossible, alors ils l’ont fait

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut
    Bein tu peux peut être utiliser la fonction dlmwrite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaMatrice=rand(2000,2);
    dlmwrite('MonFichier.txt',MaMatrice,' ');
    et dans le fichier MonFichier.txt, tu as 2 colonnes séparées par un espace (le 3eme argument de la fonction dlmwrite)

    A+

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut
    ca marche merci !!!
    mais maintenant plus dur : pareil mais avec une matrice a nombre de colonnes grand ou indéterminé (et sans faire de boucle) ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut
    ok ricololo j'avais pas vu ta réponse
    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 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 166
    Points
    53 166
    Par défaut
    Citation Envoyé par loique Voir le message
    avec une matrice a nombre de colonnes grand ou indéterminé (et sans faire de boucle) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    r = round(rand*10);
    c = round(rand*10);
     
    D = rand(r,c)
     
    fmt = [repmat('%.4f ',1,size(D,2)-1) '%.4f\n'];
     
    fid = fopen('data.txt','wt');
        fprintf(fid,fmt,D.');
    fclose(fid);
     
    edit data.txt
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut
    ok en fait tu crées un string en '%g' de la longueur souhaitée ?

  8. #8
    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 166
    Points
    53 166
    Par défaut
    Citation Envoyé par loique Voir le message
    ok en fait tu crées un string en '%g' de la longueur souhaitée ?
    Tout a fait, il suffit de répliquer le format d'un élément de la matrice avec le séparateur (ici l'espace).

    C'est pourquoi il faut le faire n-1 fois et compléter avec le format de l'élément, sinon la ligne se termine par le séparateur.
    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)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/01/2015, 09h23
  2. Ecriture d'une matrice uitable dans un .txt
    Par Tarabass911 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 11/06/2013, 15h09
  3. Erreur, ecriture d'une matrice dans un fichier
    Par Lorddolf dans le forum MATLAB
    Réponses: 7
    Dernier message: 12/07/2010, 22h19
  4. Matrice de taille quelconque à partir d'une interface graphique
    Par LMU2S dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 28/02/2008, 12h31
  5. Réponses: 6
    Dernier message: 04/03/2004, 09h35

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