Bon ok j'en ai marre là, je veux juste lire des données pour vérifier ce qui ne va pas dans mon programme, sauf que même faire ça me rend dingo là...
Voila j'ai créé via un code en fortran90 un fichier d'input dont les données sont les suivantes
Code:
0.641690D+24 0.0000000000000000D+00 0.0000000000000000D+00 0.0000000000000000D+00 0.0000000000000000D+00 0.0000000000000000D+00 0.0000000000000000D+00
0.102000D+16 0.2067595000000000D+08 0.0000000000000000D+00 0.0000000000000000D+00 -0.2727236998141037D+00 0.1439011972119080D+04 -0.3409365055435530D+00
0.102000D+16 0.1672704121161800D+08 0.1215290680793900D+08 0.0000000000000000D+00 -0.8462659223737585D+03 0.1164256704517121D+04 -0.3440738671707326D+00
0.102000D+16 0.6389102498389000D+07 0.1966363557661700D+08 0.0000000000000000D+00 -0.1368564718538586D+04 0.4444039097272558D+03 -0.1103609767111250D+00
0.102000D+16 -0.6389043785160000D+07 0.1966345487587800D+08 0.0000000000000000D+00 -0.1369007480781215D+04 -0.4449439320086698D+03 -0.3631044244371529D+00
0.102000D+16 -0.1672658007193100D+08 0.1215257177034500D+08 0.0000000000000000D+00 -0.8455409650863264D+03 -0.1164550748691591D+04 -0.2135322477939827D+00
0.102000D+16 -0.2067500000000000D+08 0.0000000000000000D+00 0.0000000000000000D+00 0.9002579192349507D-01 -0.1439599192374744D+04 -0.2575578416603397D+00
0.102000D+16 -0.1672627264547300D+08 -0.1215234841194900D+08 0.0000000000000000D+00 0.8458908390237691D+03 -0.1164613748380883D+04 -0.5820530614351015D-01
0.102000D+16 -0.6388808932244000D+07 -0.1966273207292600D+08 0.0000000000000000D+00 0.1368786040266474D+04 -0.4448398119217999D+03 -0.8182183516262585D-01
0.102000D+16 0.6388750219015000D+07 -0.1966255137218800D+08 0.0000000000000000D+00 0.1369189606892985D+04 0.4444654840628327D+03 -0.2299574233336704D+00
0.102000D+16 0.1672581150578600D+08 -0.1215201337435500D+08 0.0000000000000000D+00 0.8459704407304117D+03 0.1164140022962844D+04 -0.2518079517902173D+00
Or j'ai l'impression que matlab refuse de lire les nombres formatés ainsi (1.0D+00) , enfin il veut pas avec fscanf en tout cas...
(En cherchant un peu j'ai trouvé ça comme recapitulatif sur le sujet, concernant l'écriture mais les 'codes' pour les formats sont les mêmes non ? )
d : pour les entiers
e : pour une notation à virgule flottante où la partie exposant est délimitée par un e minuscule (ex: 3.1415e+00)
E : même notation mais E remplace e (ex: 3.1415E+00)
f : pour une notation à virgule fixe (ex: 3.1415)
g : la notation la plus compacte entre la notation à virgule flottante et la notation à virgule fixe est utilisée
Don bêtement j'ai fait :
Code:
name = input('Donner le nom du fichier : ','s');
fileID=fopen(['./Input/',name]);
nbelt = str2num(input('Nombre d''elements ? : ','s'));
format = '%f,%f,%f,%f,%f,%f,%f');
% variante : format = '%14.6f, %24.16f, %24.16f, %24.16f, %24.16f, %24.16f, %24.16f';
size=[nbelt 7];
lec=fscanf(fileID,format,size););
fclose(fileID);
Rien de compliqué a priori, j'ai même pas demandé à calculer le nombre de lignes (qui correspond au nombre d'éléments), je veux juste lire mes masses/positions/vitesses et enregistrer ça dans une matrice quoi... Je sais que c'est pas idéal le début (pour avoir mon nbelt j'ai écrit le premier truc auquel je pensais, tant que ça fonctionne...) mais là j'arrive pas à lire un fichier tout con et ça m'énerve.
Là j'en suis à tester une variante pù je lis ça en string puis je convertis en nombre... (comme pour nbelt). Alors 1. ça marche pas pour le moment et 2. paye ta perte de précision non ?
J'ai l'impression de savori rien faire, ça devient frustrant à force...
#HALP