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 :

probleme lecture fichier binaire


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut probleme lecture fichier binaire
    Bonjour tous,

    j'ai un logiciel qui m'a écrit des données dans un fichier ".txt" au format binaire,
    les nombres enregistrer sont des "flottant" et il s'agit d'une matrice de taille 1501 lignes par un nombre de colonne de 1187.

    j'ai essayer d'ouvrir ce fichier avec matlab:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fid=fopen('monFichier.txt');
    [a b]=fread(fid,[1501 inf])
    fclose(fid)
    mais le résultat que me donne matlab c'est un fichier avec 1501 lignes mais 4748 colonnes et chaque variable est de type "integer" dans "a"....

    j'ai donc essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fid=fopen('monFichier.txt');
    [a b]=fread(fid,[1501 inf],'double')
    fclose(fid)
    mais j'obtiens une matrice 1501x594.....
    les valeurs à l'intérieur sont bien des doubles mais de du type 1e-16, 5e+18...etc

    et ça n'a rien à voir avec ce que j'ai écris dans ce fichier qui est > 0 et au plus de l'ordre de 1000.....

    auriez vous une idée d'où ceci vient ?
    (je n'ai pas bien compris dans l'aide les différentes combinaisons d'option possible... ce que j'ai fais avec 'double me paraissait bien...)

    je vous remercie

  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 313
    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 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Par défaut, si tu ne spécifie pas la précision, fread lit les valeurs par paquet de 8 bits.

    Quand tu lis par 8 bits, tu obtiens 7126748 valeurs (1501*4748).
    Or toi tu cherches à en lire 1781687 (1501*1187)

    Comme 7126748/1781687 = 4, il faut lire les données par paquets de 4*8bits = 32 bits.
    Il faut donc utiliser la précision 'single' (et non pas 'double' qui est elle codée sur 64 bits)

    Essaie donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [a b]=fread(fid,[1501 inf],'single')

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci !!!! c'est beaucoup mieux!!

    par contre c'est bizarre, il y a certaines valeurs incohérentes dans ce que j'obtiens....

    la majorité des valeurs est bonne mais parfois j'ai des valeurs négatives qui s'affichent (alors que j'en ai pas à l'origine) et parfois j'ai des NaN...

    j'ai essayé avec l'option 'float' et float32' qui est du même type que single 32bits (4) mais ça n'arrange pas les choses...

    aurais tu une idée d'où ceci peut venir ?

    ps: j'ai dis au logiciel de m'afficher ce qu'il écrit et il n'écrit pas de nombres négatifs dans le fichier donc c'est bien à la lecture mon probleme...

  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 313
    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 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par membreComplexe12 Voir le message
    aurais tu une idée d'où ceci peut venir ?
    Si les valeurs sont écrites correctement dans le fichier (c'est à dire toujours avec le même format), il n'y a pas de raison que fread n'arrive pas à en lire certaines.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Dut Voir le message
    Si les valeurs sont écrites correctement dans le fichier (c'est à dire toujours avec le même format), il n'y a pas de raison que fread n'arrive pas à en lire certaines.
    ok, je vais donc voir de ce côté là, de toute façon je soupsonnais deja le logiciel de faire des erreurs lors de l'écriture car il m'a deja fais des betises par le passé...

    en tout cas merci pour ton aide!!!!!!!!!


  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 313
    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 313
    Points : 52 939
    Points
    52 939
    Par défaut
    A tout hasard, vérifies la taille du fichier (en octets)

    Tu dois normalement trouver 7126748 octets

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Dut Voir le message
    A tout hasard, vérifies la taille du fichier (en octets)

    Tu dois normalement trouver 7126748 octets
    merci, je vais regarder ça

    peux tu me detailler le calcul? je suis assez novice en trucs binaires

  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 313
    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 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par membreComplexe12 Voir le message
    peux tu me detailler le calcul?
    Quel calcul ?

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Dut Voir le message
    Quel calcul ?
    c'est bon j'ai trouvé

    - un float est codé sur 4 octets (je ne savais pas...)
    - j'en est 1501x1187
    donc taille 1501x1187x4

    EDIT:
    j'ai vérifié, il fait bien la bonne taille, il me semble que le logiciel que j'utilise tronque certains nombre sans raison lors de l'écriture....
    j'ai essayé un autre mode d'écriture et il m'a écrit plein de chose correcte mais
    à quelques endroit il a écrit 994 au lieu de 20.994 ...

    je pense qu'en binaire il a le même problème d'écriture

    merci en tout cas pour ton aide, ça m'a permis de voir que le problème est dans l'ecriture des fichiers ((

  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 313
    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 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par membreComplexe12 Voir le message
    - un float est codé sur 4 octets (je ne savais pas...)
    - j'en est 1501x1187
    donc taille 1501x1187x4
    C'est expliqué dans la FAQ : Comment déterminer approximativement la quantité de mémoire nécessaire pour le stockage d'une variable ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877

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

Discussions similaires

  1. [VB]Probleme lecture fichier text et affichage
    Par clochardevobsy dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/03/2006, 08h46
  2. Probleme lecture fichier acces sequentiel
    Par ouar dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 13h39
  3. Probleme lecture fichier
    Par CaptainChoc dans le forum C++
    Réponses: 5
    Dernier message: 06/03/2005, 10h40
  4. [LG]probleme lecture fichier
    Par yp036871 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2004, 19h22
  5. [LG]Probleme lecture fichier file of ....
    Par John_win dans le forum Langage
    Réponses: 11
    Dernier message: 11/11/2003, 18h53

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