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 :

Création fichier ASCII


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Création fichier ASCII
    Bonjour,

    Je souhaiterai créer un fichier .txt à partir de MATLAB. Ce fichier contiendrai une seule variable qui est, dans MATLAB, de la forme:
    lat_20hz = [-854562 ; -856123 ; [....] ]
    C'est donc dans MATLAB un vecteur colonne.

    J'aimerai donc créer un fichier ASCII avec une colonne correspondant à cette variable.

    J'ai essayer d'enregistrer la variable à partir de la fonction 'save' grâce à la ligne de code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >> save('lat_juin','lat_20hz_h','-ASCII')
    Or cela me renvoi:

    Warning: Attempt to write an unsupported data type to an ASCII file.
    	Variable 'lat_20hz_h' not written to file. 
    Si quelqu'un peut m'éclairer ...

    Merci

    Cordialement

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Quel est le type de ta variable lat_20hz_h ? (Tu peux utiliser la commande WHOS pour le connaitre).

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Bonjour Duf,

    Le type de la variable Lat_20hz est : int32.

    De plus un nouveau problème se pose. Il y a une autre variable Lon_20hz colonne (même taille, même caractéristique ,même type int32 que Lat_20hz).

    Le fichier ascii de sortie devra avoir Lat_20hz dans la première colonne et Long_20hz dans la seconde colonne.

    Est-ce possible?

    Merci

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Oui tout à fait,

    En fait pour éviter d'avoir le warning, il te faut convertir ta variable en double avec la fonction DOUBLE.

    Pour sauvegarder tes 2 variables dans ton fichier, il te suffit de les concaténer (avec les crochets []).

    Ce qui devrait donner quelquechose comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    data = double([Lat_20hz, Lon_20hz]);
    save('test.mat', 'data', '-ascii')
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 12
    Points
    12
    Par défaut



    Merci Duf

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Il y a un nouveau problème...

    J'ai bien un fichier ASCII avec mes deux colonnes et c'est super.
    Seulement, ce fichier est agencé comme suivant :

    première colonne = vide
    deuxième colonne = vide
    troisieme colonne = -
    quatrième colonne = 8
    cinquieme colonne = .
    sixieme colonne = 8
    .... etc
    je me retrouve avec un fichier avec 32 colonnes alors que pour l'application que je dois en faire il ne doit contenir que deux colonnes (col1 =lat col2=long)...

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    -8.8194600e+05 2.9157933e+08
    -8.8444700e+05 2.9158022e+08
    -8.8694900e+05 2.9158112e+08
    -8.8945000e+05 2.9158201e+08

    ( comme présenté dans le message précédent une ligne est agencée en 32 colonnes, je voudrai une ligne agencé en 2 colonnes)

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

    Citation Envoyé par tshokwe Voir le message
    -8.8194600e+05 2.9157933e+08
    -8.8444700e+05 2.9158022e+08
    -8.8694900e+05 2.9158112e+08
    -8.8945000e+05 2.9158201e+08
    Je ne vois vraiment pas le problème... Tu as bien deux colonnes contenant tes valeurs, elle sont justes au format scientifique.
    Sous quelle forme voudrais-tu les avoir?

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    En réalité le fichier se présente sous cette forme :

    -8.8194600e+05 2.9157933e+08
    -8.8444700e+05 2.9158022e+08
    -8.8694900e+05 2.9158112e+08
    -8.8945000e+05 2.9158201e+08
    -8.9195200e+05 2.9158290e+08

    avec pour la premiere ligne en exemple :

    première col = vide
    deuxieme col= vide
    troisieme col= vide
    qutrieme col= -
    cinquieme col= 8
    sixieme col = .
    septieme = 8
    huitieme = 1
    etc .......

    -8.8194600e+05 n'appartient pas a une seule et même colonne mais chaque caractère est placé dans une colonne.

    je ne sais pas si je suis claire .... De plus il y a trois colonne vide en amont des premières valeurs....

  10. #10
    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 163
    Points
    53 163
    Par défaut
    Je ne comprends pas très bien ton proiblème de colonne.

    Peut être que si tu nous fournissait un fichier txt, nous pourrions y voir plus clair ?

    Sinon, une alternative à SAVE qui évite de passer en classe Double :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    lat_20hz = int32([-854562 ; -856123 ;-854562 ; -856123 ;-854562 ; -856123 ]);
    lon_20hz = lat_20hz/2;
     
     
    fid = fopen('lat_juin','wt');
        fprintf(fid,'%d %d\n',[lat_20hz lon_20hz].');
    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)

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    J'ai réfléchi je crois qu'en réaalité il n'y a pas de probleme de colonne.
    Merci pour l'alternative, je vais essayer.

  12. #12
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Dut Voir le message
    Je ne comprends pas très bien ton proiblème de colonne.

    Peut être que si tu nous fournissait un fichier txt, nous pourrions y voir plus clair ?

    Sinon, une alternative à SAVE qui évite de passer en classe Double :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    lat_20hz = int32([-854562 ; -856123 ;-854562 ; -856123 ;-854562 ; -856123 ]);
    lon_20hz = lat_20hz/2;
     
     
    fid = fopen('lat_juin','wt');
        fprintf(fid,'%d %d\n',[lat_20hz lon_20hz].');
    fclose(fid);

    comment à partir de ces lignes de commandes enregistrer le fichier 'lat_juin' en .xy ???

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

Discussions similaires

  1. Création fichier dans SP
    Par MuadDib_CH dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/07/2005, 16h23
  2. lire un fichier ascii complexe
    Par alexum dans le forum C++
    Réponses: 9
    Dernier message: 16/02/2005, 09h05
  3. Import fichier ASCII dans une base
    Par pithier dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/02/2005, 19h03
  4. Création Fichier
    Par NPortmann dans le forum ASP
    Réponses: 4
    Dernier message: 03/11/2004, 16h36
  5. Création fichier MDE
    Par faventin dans le forum Access
    Réponses: 4
    Dernier message: 25/10/2004, 15h03

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