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.dat : erreur dans les valeurs obtenues [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Lecture de fichier.dat : erreur dans les valeurs obtenues
    Bonjour,

    Je souhaite lire un fichier.dat sans utiliser la fonction fread. Pour vous montrer mon problème je mets ci-dessous mon code. Dans ce code, je remplis un vecteur (D) avec des valeurs allant de 1 à 1000, que je sauve dans un fichier .dat. Par la suite, je lis ce fichier et je suis censée obtenir le même vecteur (E).

    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
     
    format = 'uint16';
    D = 1:1000;
    D = uint16(D);
    fid = fopen('test.dat','w');
    fwrite(fid,(D),format);
    fclose(fid);
    fid=fopen('test.dat','r');
    data = [];
    E = [];
    l = 0;
    while l ~= -1
        l = fgets(fid);
        data = [data,l];
    end
    for i = 1:2:size(data,2)-1
        temp = uint16(data(i))+bitshift(uint16(data(i+1)),8);
        E = [E,temp];
    end
    fclose(fid);
    Je n'obtiens aucun message d'erreur et j'obtiens bien un vecteur E. En revanche, je n'obtiens pas un vecteur dont les valeurs vont de 1 à 1000 : certaines valeurs sont fausses, par exemple 145 devient 8216, 146 devient 8217, 147 devient 8220, etc. Pouvez-vous m'expliquer quelle est mon erreur ?

  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 315
    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 315
    Points : 52 945
    Points
    52 945
    Par défaut
    Tu travailles sans aucun doute avec Windows.

    C'est un problème avec l'encodage des caractères via le jeu de caractères Windows-1252 (par défaut avec Windows)

    Windows-1252 est une extension de l'ISO/CEI 8859-1 : il diffère du codage ISO-8859-1 par l'utilisation de caractères imprimables, plutôt que des caractères de contrôle, dans les codes 128 à 159.
    => Windows-1252 - Aspects techniques

    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
    D = 1:1000;
     
    fmt = 'uint16';
     
    fid = fopen('test.dat', 'w', 'n', 'ISO-8859-1');
    fwrite(fid, D, fmt);
    fclose(fid);
     
    fid=fopen('test.dat', 'r', 'n', 'ISO-8859-1');
    data = [];
    E = [];
    l = 0;
    while l ~= -1
        l = fgets(fid);
        data = [data,l];
    end
    fclose(fid);
     
    for i = 1:2:size(data,2)-1
        temp = uint16(data(i))+bitshift(uint16(data(i+1)),8);
        E = [E,temp];
    end

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    En effet, le problème était bien là. Merci beaucoup pour la réponse, c'était rapide !

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

Discussions similaires

  1. ERREUR dans les valeurs de la fft
    Par angelmn dans le forum Signal
    Réponses: 9
    Dernier message: 07/10/2014, 17h55
  2. Réponses: 9
    Dernier message: 23/05/2012, 20h52
  3. Réponses: 5
    Dernier message: 21/12/2009, 09h01
  4. Réponses: 3
    Dernier message: 27/03/2009, 10h54
  5. Réponses: 20
    Dernier message: 23/03/2006, 16h21

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