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 :

Lecture de fichier binaire


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut Lecture de fichier binaire
    Bonjour,

    Je réalise une interface et je souhaiterais pouvoir ouvrir et lire des fichiers binaires... est ce possible?si oui comment faire?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Tout dépend du codage de ton fichier binaire.
    Quelques pistes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    load %avec option -ascii
     
    textscan
    textread
     
    fopen
    fread

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    et cela est censé me lire un fichier binaire?

  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 307
    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 307
    Points : 52 887
    Points
    52 887
    Par défaut
    Pour lire un fichier binaire, la première chose à trouver, c'est le format d'écriture du fichier. Ensuite comme indiqué par Caro, tu utilises FOPEN/FREAD/FCLOSE avec le format.

    A lire : File I/O Guide

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    et une fois que l'on connait le format il faut le convertir ou pas?

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Que veux-tu dire par convertir ?
    Convertir quoi en quoi ?
    Si tu veux de l'aide, il faut nous donner des infos sur le format de ton fichier "binaire" (parce qu'en fait ça ne signifie pas grand chose binaire : c'est un fichier avec que des 0 et des 1 ???, un fichier avec que des numériques ? avec un peu de texte dedans aussi ???).
    Donc le mieux, si c'est un fichier lisible en mode texte, c'est un copier-coller d'un bout du fichier...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    pour le moment je sais juste que c'est un .bin

  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 307
    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 307
    Points : 52 887
    Points
    52 887
    Par défaut
    Autant te dire tout de suite que si tu ne connais pas le format de codage des valeurs à l'intérieur du fichier, c'est inutile de continuer plus loin

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    mais commen ca les valeur de codage a l'intérieur du fichier????
    je comprend pas très bien....

  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 307
    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 307
    Points : 52 887
    Points
    52 887
    Par défaut
    Citation Envoyé par nuans
    je comprend pas très bien
    Moi non plus... on parle bien de fichier binaire... pas de fichier ascii ?

  11. #11
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Si c'est un fichier texte par ex. tu peux l'ouvrir sous Notepad (ou autre éditeur de texte).
    exemple mon fichier fichier.txt à cette tête là :
    10 20
    40 50

    Je veux lire les valeurs dans une matrice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    %sol° 1
    A = load('fichier.txt','-ascii');
    %sol° 2
    [c1,c2]=textread('fichier.txt','%d %d')
    A=[c1,c2];
    %et y'en a d'autres....
    Par contre si je crée un fichier MAT-File :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    A=[10 20;40 50];
    save('fichier.mat','A');
    Si tu ouvres le fichier en mode texte, et ben c'est pas très joli...
    Le seul moyen de récupérer ta valeur c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    load('fichier.mat');
    Or des formats de fichiers il y en a un nombre sûrement presque infini...
    Le plus simple c'est le texte, mais après...entre les formats propriétaires (MAT, Acrobat,...), les images...

    Le fait d'avoir une extension .bin ne donne aucune info.
    En effet rien ne m'empêche de créer mon fichier.txt et de le renommer en .bin, ça restera toujours un fichier texte que je peux lire.

    C'est un peu plus clair ?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    donc si c'est un fichier ascii je procede de la maniere décrite avec fopen fread fclose...mais sur mon interface cela me permettra-t-il que lorsque je clique sur un bouton il m'ouvre une fenetre avec dedans ts les fichiers que l'on peu sélectionner??????

  13. #13
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par nuans
    donc si c'est un fichier ascii je procede de la maniere décrite avec fopen fread fclose...
    Voui...ou avec textread, ou avec textscan...
    Exemple avec textscan si tu veux vraiment juste récupérer du texte et l'afficher dans un edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    fid=fopen('matlabrc.m');%matlabrc.m est une fonction de matlab
    C=textscan(fid,'%s');
    fclose(fid);
    ue=uicontrol('style','edit','max',2,'string',C{1},'pos',[10 10 100 300])
    Citation Envoyé par nuans
    mais sur mon interface cela me permettra-t-il que lorsque je clique sur un bouton il m'ouvre une fenetre avec dedans ts les fichiers que l'on peu sélectionner??????
    ça c'est encore autre chose...Une piste :

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    La commande uigetfile me permet d'ouvrir les fenetre me premettant a choisir le fichier a charger.

    Mais par exemple, disons que je veux visualiser un signal .
    Je le charge par l'interface à l'aide de la commande uigetfile, mais comment pourrais-je faire pour le visualiser dans un axe par la suite?

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 307
    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 307
    Points : 52 887
    Points
    52 887
    Par défaut
    Voila ce que tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [fname,pname])uigetfile(...);
    fname=fullfile(pname,fname);
     
    fid=fopen(fname,'rt'); % Si c'est toujours un fichier ASCII
       <lecture des données>
    fclose(fid);
     
    axes(handles.axes_où_tracer)
    <traçage des données>

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    et pour un fichier codé en binaire (donc codé en 0 et 1) les lignes de commandes changent?

  17. #17
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 307
    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 307
    Points : 52 887
    Points
    52 887
    Par défaut
    Pour lire un fichier texte (ascii) :
    • fopen
    • fscanf
    • fgetl
    • sscanf
    • fclose
    • dlmread
    • textread
    • textscan


    Pour lire un fichier binaire :
    • fopen
    • fread
    • fseek
    • fclose


    A lire : File I/O Guide

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    et si je veux faire apparaitre mon fichier binaire(qui représente un signal) sur un axe,j'ai juste utiliser la commande:

    plot(t,signal)???


    c'est pas facile tout ça a faire...

  19. #19
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    si t représente des valeurs binaires comme l'exemple ci dessous ,oui:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>t=[1 0 1]
    t =
         1     0     1
    >> plot(t)

  20. #20
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Pour le moment mon code est le suivant mais je n'arrive pas a lire le fichier voulu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [fileName,PathName] = uigetfile({'*.m';'*.bin';'*.dat';'*.mat'},'ouvrir','D:\IHM_001')
    set(handles.tagSignalIHM_001,'String',sprintf( '%c',fileName))
    assignin('base','charge',charge);
    fname=fullfile(PathName,fileName);
    assignin('base','fileName',fileName)
    fid=fopen(fname,'r+');
    fclose(fid);
    plot(t,fileName);
    et pareil pour 't' je ne sais pas quel valeur mettre...

    Je rappel que le fichier .bin que je souhaite ouvrir est un signal...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Lecture de fichier binaire fortran avec java
    Par bigbrother737 dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2007, 10h34
  2. Lecture de fichier binaire et gestion de fin de fichier
    Par habasque dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 02/05/2007, 17h06
  3. lecture ecriture fichier binaire
    Par jonckers dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/04/2007, 09h12
  4. Réponses: 5
    Dernier message: 26/03/2007, 01h30
  5. lecture de fichier binaire
    Par Salim6 dans le forum C
    Réponses: 3
    Dernier message: 07/11/2005, 19h56

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