Lire suite de Chiffre (ds fichier txt) matlab
Résolu/Fermé
S.Taupin
Messages postés
1
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
17 novembre 2008
-
17 nov. 2008 à 15:03
Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 - 25 nov. 2008 à 13:02
Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 - 25 nov. 2008 à 13:02
A voir également:
- Lire suite de Chiffre (ds fichier txt) matlab
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Fichier rar - Guide
- Lire fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
Fee Fay
Messages postés
635
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
31 mai 2009
377
19 nov. 2008 à 12:50
19 nov. 2008 à 12:50
Bonjour
Ton fichier contient 213840 lignes.
À raison de 10 valeurs par lignes, cela donne un total de 2138400 valeurs.
2138400 n'est pas un multiple de 28.
Donc soit je n'ai pas compris ta demande, soit il y a une erreur dans la façon dont tu veux exploiter ton fichier de données.
Bon après-midi
Ton fichier contient 213840 lignes.
À raison de 10 valeurs par lignes, cela donne un total de 2138400 valeurs.
2138400 n'est pas un multiple de 28.
Donc soit je n'ai pas compris ta demande, soit il y a une erreur dans la façon dont tu veux exploiter ton fichier de données.
Bon après-midi
Fee Fay
Messages postés
635
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
31 mai 2009
377
25 nov. 2008 à 13:02
25 nov. 2008 à 13:02
Bonjour
Ça ne correspond toujours pas au nombre de valeurs dans le fichier.
À raison d'un pas d'1/2 degré pour la longitude, cela donne 2*360 = 720 positions.
À raison d'un pas d'1/2 degré pour la latitude en excluant les pôles, cela donne 2*180-1 = 359 positions.
À raison de 16 positions pour la profondeur, cela donne un total de 359*720*16 = 4135680 valeurs dans le fichier, ce qui n'est pas le cas.
Ton petit programme est de toute façon faux puisque le pas est d'1/2 degré et que comme tu me l'as dit, il y a 16 position pour la profondeur.
Le 3 que tu obtiens n'a aucune importance, il s'agit juste d'un identifiant pour le fichier que tu ouvres, les identifiants 1 et 2 étant déjà pris respectivement pour le standard output et le standard error. Le seul cas où il y a à s'inquiéter de la valeur que cela sort, c'est quand il s'agit de -1, cela veut dire qu'il y a une erreur.
Le \n, tu n'as pas besoin de l'utiliser à la lecture. C'est pour passer à une nouvelle ligne.
Pour lire le fichier tel qu'il est, il suffit de faire :
Bon après-midi
Ça ne correspond toujours pas au nombre de valeurs dans le fichier.
À raison d'un pas d'1/2 degré pour la longitude, cela donne 2*360 = 720 positions.
À raison d'un pas d'1/2 degré pour la latitude en excluant les pôles, cela donne 2*180-1 = 359 positions.
À raison de 16 positions pour la profondeur, cela donne un total de 359*720*16 = 4135680 valeurs dans le fichier, ce qui n'est pas le cas.
Ton petit programme est de toute façon faux puisque le pas est d'1/2 degré et que comme tu me l'as dit, il y a 16 position pour la profondeur.
Le 3 que tu obtiens n'a aucune importance, il s'agit juste d'un identifiant pour le fichier que tu ouvres, les identifiants 1 et 2 étant déjà pris respectivement pour le standard output et le standard error. Le seul cas où il y a à s'inquiéter de la valeur que cela sort, c'est quand il s'agit de -1, cela veut dire qu'il y a une erreur.
Le \n, tu n'as pas besoin de l'utiliser à la lecture. C'est pour passer à une nouvelle ligne.
Pour lire le fichier tel qu'il est, il suffit de faire :
fid=fopen('t00an1','r'); M=fscanf(fid, '%f', [10 213840]); M=M.'; fclose(fid);Il suffit ensuite d'utiliser un reshape pour donner à M la taille qui convient. Mais dans la mesure où tu ne sais pas comment sont organisées les données, il est malheureusement impossible d'aller plus loin.
Bon après-midi
24 nov. 2008 à 15:22
Effectivement il y avait deux erreurs : les profondeurs sont sur 16 niveaux .
Je n'avais pas bien compris la façon dont été organisées les données:
Je reprend mon exemple précédent en le modifiant:
Le premier chiffre du fichier correspond au point de coordonnée (89.5° de latitude Nord , 0° de longitude , profondeur 1) , les 359 données suivantes correspondent aux données de température en faisant un "tour du globe"
Ensuite on recommence pour (88,5°,0°,profondeur 1 )
Donc il suffit d'une matrice de taille 360x180 ( à peu près ) pour stocker les températures à la prondeur k.
Une fois que la totalité du globe a été parcourue on passe à la profondeur 2 , on refait tout le globe , on passe à la profondeur suivante ... etc
D'après ce que j'ai compris sur mes recherches il faut utiliser la fonction fopen pour ouvrir le fichier mais en faisant des test sur un fichier " au pif"
f=fopen('nom_fichier.txt','r')
J'obtiens ans=3 donc je comprend pas bien . J'ai cherché dans l'aide mais je n'ai rien trouvé sur ce problème.
Ensuite pour lire le fichier il faut utiliser fscan apparemment , pareil j'ai un peu de mal à comprendre le fonctionnement de cette fonction .
Voila le prototype de programme: (
f = fopen ('nom_du_fichier', '')
Temp = zeros (360, 180, 28);
for m = 1:28
Temp (:, :, m) = fscanf (f, '%f%f%f%f%f%f%f%f%f%f\n', [360, 180]);
end
Ca vous semble correct comme programme? En particulier je comprend pas à quoi correspond le n à la fin..
Merci beaucoup.