Lire suite chiffre(format texte) sous matlab
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Lire suite chiffre(format texte) sous matlab



  1. #1
    invite7f2916f1

    Lire suite chiffre(format texte) sous matlab


    ------

    Bonjour,
    Dans le cadre d'un TIPE nous devons faire un programme sur matlab pour exploiter des données de températures océaniques issues d'une base .
    Nous avons des fichiers de ce type , :

    ftp://ftp.nodc.noaa.gov/pub/data.nod...logy/t00an1.gz

    Donc c'est une suite de chiffre sur 10 colonnes et beaucoup de lignes , et apparament les chiffres se lisent "les uns à la suite des autres".
    En gros on aurait besoin de créer une matrice en 3 dimensions pour stocker nos valeurs de température , pour notre lecture on aurait 3 boucles , une sur la latitude , l'autre sur la longitude et la dernière sur la profondeur.

    C'est pas évident d'expliquer la façon dont les données sont données sont rangées par écrit donc je vais donner un exemple de ce qu'il nous faudrait faire:

    Le premier chiffre du fichier correspond au point de coordonnée (89.5° de latitude Nord , 0° de longitude , profondeur 0) , les 27 données suivantes correspondent aux données de température sur 27 niveaux ( donc 28 en tout) , donc il faut que l'algo stocke toutes ces données dans une même "colonne d'eau" dans ma matrice 3D (j'espère que c'est assez clair , pas évident .)
    Ensuite l'algo doit faire la même chose pour le point de coordonnée (89.5°,0.5°) sur les 28 profondeurs , puis (0.5°,1°) etc.
    Ensuite une fois que le "tour" de la terre est fait il faut passer la latitude 89,0 et refaire la même opération...

    Il faut faire ça sur tout le globe , est-ce que vous savez comment effectuer ce genre de requêtes sur matlab? Je suis assez novice en programmation matlab et je n'ai jamais fait ce genre de choses.

    Merci beaucoup , j'espère avoir été compréhensible .

    PS: ne vous étonnez pas de ne voir que des 99,9999 dans les premières pages de ce fichier , il n'y a évidemment pas de données au niveau des pôles , des continents ou partout sur les océans... ce sont des données issues des campagnes océanographiques.

    -----

  2. #2
    lou_ibmix_xi

    Re : Lire suite chiffre(format texte) sous matlab

    salut,

    Allons-y par étape, la première chose on ouvre le fichier en lecture
    Code:
    f = fopen (le_nom_du_fichier, 'r');
    Puis on récupère les données, il y à 10 '%f' car il y a 10 valeurs par lignes, de plus le [28, Inf] permet de lire tous le fichier par bloc de 28 valeurs:
    Code:
    [Val, Count] = fscanf (f, '%f%f%f%f%f%f%f%f%f%f\n', [28, Inf]);
    Ainsi la matrice Val contient 28 lignes et beaucoup de colonnes, une colonne par colonne d'eau (si j'ai bien compris).
    Noublions pas de refermer le fichier
    Code:
    fclose (f);
    Pour plus de détails je te conseille l'aide en ligne de fscanf.
    Dernière modification par lou_ibmix_xi ; 17/11/2008 à 15h47. Motif: bloc de code

  3. #3
    invite7f2916f1

    Re : Lire suite chiffre(format texte) sous matlab

    Merci beaucoup pour cette réponse , je vais voir si j'arrive à faire ce que je veux avec ça.

    Par contre ,j'ai fait une erreur dans la façon dont été ordonnées les données dans le fichier.

    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



    Donc au bout du compte si je procède ainsi j'obtiens 28 matrices de taille 360x180 .
    Est-ce que je peux les "additionner" ( je ne sais pas quel est le terme approprié ) de manière à obtenir une sorte de matrice 3D de taille 360x180x28?

    Ce doit être possible de ne pas passer par toutes les matrices intermediaires aussi ( ça paraît peut être plus simple).
    Qu'en pensez vous?

    Il est aussi possible de faire ça avec une matrice "simple" de taille 64800x28 comme le proposait lou_ibmix_xi mais il me semble que dans ce cas la l'utilisation sera moins naturelle ( alors que l'avantage de cette matrice "3D" est que l'on a une correspondance directe entre (latitude,longitude,profondeur ) et le couple (i,j,k) correspondant dans la "matrice".
    Je pense que pour la suite de notre boulot sur ces données ça pourrait valoir le coup de se compliquer un peu la tête pour avoir un objet facilement exploitable par la suite .

    Je vais essayer d'utiliser l'aide en ligne , encore une fois merci beaucoup de ta réponse lou_ibmix_xi! J'ai du mal à expliquer clairement ce que je veux ur ce coup là , en fait c'est très "visuel" et j'ai du mal à le faire passer à l'écrit .

  4. #4
    lou_ibmix_xi

    Re : Lire suite chiffre(format texte) sous matlab

    Pas de problème, fait quelque chose ressemblant à:
    Code:
    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

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Lire du texte sur Matlab
    Par Frink dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 25/04/2011, 15h29
  2. Comment lire une video de format
    Par inviteabd41e49 dans le forum Matériel - Hardware
    Réponses: 4
    Dernier message: 09/04/2008, 14h57
  3. Format de fichier texte sur clé USB..?
    Par vincent66 dans le forum Matériel - Hardware
    Réponses: 0
    Dernier message: 29/03/2008, 01h36
  4. Arithmétique : bien lire le texte
    Par jcm dans le forum Mathématiques du supérieur
    Réponses: 9
    Dernier message: 20/11/2004, 20h20
Découvrez nos comparatifs produits sur l'informatique et les technologies.