[Matlab] Lecture fichier sans erreur
Résolu/Fermé
aurna
Messages postés
184
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
26 novembre 2009
-
28 oct. 2008 à 18:44
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 4 nov. 2008 à 00:21
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 4 nov. 2008 à 00:21
A voir également:
- [Matlab] Lecture fichier sans erreur
- Erreur 0x80070643 - Accueil - Windows
- Fichier rar - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
9 réponses
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
29 oct. 2008 à 18:24
29 oct. 2008 à 18:24
Salut
Tes nombres ont bien les bonnes valeurs sous MatLab. C'est juste l'affichage qui te donne cet arrondi. Dans les calculs, MatLab utilise les vraies valeurs que t'as données, il y a aucun souci.
Fais par exemple
Tes nombres ont bien les bonnes valeurs sous MatLab. C'est juste l'affichage qui te donne cet arrondi. Dans les calculs, MatLab utilise les vraies valeurs que t'as données, il y a aucun souci.
Fais par exemple
x=0.001672Ça te donne
x = 0.0017Change alors l'affichage
format long xT'obtiens
x = 0.001672000000000À plus
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
29 oct. 2008 à 19:40
29 oct. 2008 à 19:40
Si c'est vrai
À plus
À plus
aurna
Messages postés
184
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
26 novembre 2009
7
29 oct. 2008 à 20:04
29 oct. 2008 à 20:04
pourquoi mes calculs seraient ils faux alors? j'ai essayé plusieurs fois !!!
Merci
Merci
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
29 oct. 2008 à 20:08
29 oct. 2008 à 20:08
Un problème d'erreurs numériques je suppose...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
aurna
Messages postés
184
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
26 novembre 2009
7
3 nov. 2008 à 19:19
3 nov. 2008 à 19:19
jusqu'à présent je ne vois pas de problème en dehors de cette sscanf.
Quelqu'un peut-il m'aider SVP?
Quelqu'un peut-il m'aider SVP?
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
3 nov. 2008 à 19:22
3 nov. 2008 à 19:22
Je le dis et je le répète, tout calcul numérique a ses erreurs numériques.
Un exemple simple, tape ceci sous MatLab :
Non, t'obtiens ceci :
Un exemple simple, tape ceci sous MatLab :
0.3-0.2-0.1T'obtiens 0 ?
Non, t'obtiens ceci :
>>0.3-0.2-0.1 ans = -2.7756e-17Voilà ce que j'obtiens quand je tape tes quelques lignes :
>>b=size('Inverse',2); fid = fopen('data.txt', 'r'); while feof(fid) == 0 tline = fgetl(fid); res=tline(1,b+1:end ); M1=sscanf(res,'%f'); end >>M1 M1 = 0.0017 -0.0000 -0.0000 0.0024 >>format long >> M1 M1 = 0.001672000000000 -0.000006000000000 -0.000006000000000 0.002416000000000Les valeurs de M1 que MatLab a en mémoire sont les bonnes valeurs, c'est juste l'affichage qui donne un arrondi. Si on remets l'affichage en short (mais sans les tongs), voilà ce qu'on a :
>> format short >> M1 M1 = 0.0017 -0.0000 -0.0000 0.0024
aurna
Messages postés
184
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
26 novembre 2009
7
3 nov. 2008 à 21:06
3 nov. 2008 à 21:06
ok merci et que doisje donc faire pour avoir mes valeurs correctes? vu qu'en fait je calcule une matrice 400x400 et sur la diagonale je dois avoir des 1,mais j'ai des 1.00001,1,00004 ,0.99999 etc... Pourtant avant que je n'utilise sscanf je faisais les MEMES calculs et j'avais exactement 1 sur la diagonale de ma matrice.J'ai changé de façon de procéder parceque matlab mettait trop de temps,j'ai donc voulu optimiser le code et je me trouve obligé de prendre des floats dans un vecteur de charactères séparés pas des espaces. STP dis moi alors comment je peux faire pour mettre mes valeurs au bon point. Pour une valeur ou 2 il suffit peut etre de format long comme tu l'as dit. Mais pour une matrice?
Merci encore
Merci encore
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
3 nov. 2008 à 21:32
3 nov. 2008 à 21:32
Si ça donnait les bons résultats avant, c'est au niveau de l'écriture et non de la lecture qu'il y a un souci.
Utilise plutôt '%e' ou même '%s' quand tu copies ta matrice dans le fichier (si tu la copies en en tant que chaîne de caractères, convertis-la avant).
Tu peux aussi choisir '%g', ça prendra la notation la plus compacte entre '%f' et '%e' et en plus ça écrit pas les zéros inutiles.
Utilise plutôt '%e' ou même '%s' quand tu copies ta matrice dans le fichier (si tu la copies en en tant que chaîne de caractères, convertis-la avant).
Tu peux aussi choisir '%g', ça prendra la notation la plus compacte entre '%f' et '%e' et en plus ça écrit pas les zéros inutiles.
aurna
Messages postés
184
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
26 novembre 2009
7
4 nov. 2008 à 00:11
4 nov. 2008 à 00:11
je te fais savoir. Merci
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
4 nov. 2008 à 00:21
4 nov. 2008 à 00:21
OK !
De rien ;-)
De rien ;-)
29 oct. 2008 à 19:37
Je reste à l'écoute,le problème persiste.Je vous remercie.