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 :

Lire un fichier .txt (écrit avec fortran)


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Lire un fichier .txt (écrit avec fortran)
    Bonjour,

    J'ai un fichier contenant des données que j'ai écris à partir d'un programme fortran.
    Il est écrit de la manière suivante (avec write de fortran)

    A chaque latitude (de 1 à 181) :
    - écriture d'un tableau de taille (longitude, niveaux) avec longitude = 360 et niveaux = 60

    Je souhaiterais lire ces données avec Matlab par exemple pour obtenir un tableau du type :
    tab(longitude,latitude,niveaux)

    Pourriez-vous m'aider ? J'ai vu différentes possiblités (fread, dlmread,importdata) mais je ne m'en sors pas, mon tableau n'est jamais lu dans le bon sens...

    Merci beaucoup d'avance !

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénierie en automatisation et systèmes intelligents
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénierie en automatisation et systèmes intelligents
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Points : 38
    Points
    38
    Par défaut
    À quoi ressemble ce fichier exactement ?

    Disons que latitude varie de 1 à 3, longitude de 1 à 5 et niveau de 1 à 4, est-ce que tu obtiens un fichier .txt de ce style ?

    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
    1 1 1 1
    1 1 1 1
    1 1 1 1
    1 1 1 1
    1 1 1 1
    2 2 2 2
    2 2 2 2
    2 2 2 2
    2 2 2 2
    2 2 2 2
    3 3 3 3
    3 3 3 3
    3 3 3 3
    3 3 3 3
    3 3 3 3
    Bref, 4 colonnes pour les 4 niveaux et 3 tableaux de 5 lignes chacun pour les 5 longitudes et 3 latitudes ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Voici la forme du programme d'écriture :

    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
    23
    24
    25
    26
    program test_tab_prog
      implicit none
      integer, parameter :: nlon = 3 ! nombre de points sur la longitude
      integer, parameter :: nlev = 5 ! niveaux
      integer, parameter :: nlat = 2 ! nombre de points sur la latitude
      integer :: latitude
      real, dimension(nlon,nlev) :: test_tab
     
      open(10,file='results_test')
     
      do latitude = 1,nlat
         if(latitude==1) then
            test_tab(1,:) = (/1,2,3,4,5/) 
            test_tab(2,:) = (/6,7,8,9,10/)
            test_tab(3,:) = (/11,12,13,14,15/)
         elseif(latitude == 2) then
            test_tab(1,:) = (/21,22,23,24,25/) 
            test_tab(2,:) = (/26,27,28,29,210/)
            test_tab(3,:) = (/211,212,213,214,215/)
         endif
         write(10,*) test_tab(:,:)
      enddo
     
      close(10)
     
    end program test_tab_prog
    Ce qui donne comme résultat dans le fichier result_test :
    1. 6. 11. 2. 7. 12. 3. 8. 13. 4. 9. 14. 5. 10. 15.
    21. 26. 211. 22. 27. 212. 23. 28. 213. 24. 29. 214. 25. 210. 215.
    C'est donc un fichier du type result_test que je souhaite lire.
    Je souhaite lire ce fichier de manière à avoir une matrice de la forme :
    matrice(nlon,nlat,nlev)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénierie en automatisation et systèmes intelligents
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénierie en automatisation et systèmes intelligents
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Points : 38
    Points
    38
    Par défaut
    Une possibilité :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    clear all;
    clc;
     
    mat = [1 6 11 2 7 12 3 8 13 4 9 14 5 10 15;
    21 26 211 22 27 212 23 28 213 24 29 214 25 210 215];
     
    nlon = 3;
    nlev = 5;
    nlat = 2;
     
    tmp = zeros(nlon*nlev,nlat);
    tableau = zeros(nlon,nlat,nlev);
     
    fid = fopen('test.txt','w+');
    for i=1:nlat
        fprintf(fid, '%d ', mat(i,:));
        fprintf(fid, '\r\n');
    end
    fclose(fid);
     
    % Le bout qui t'intéresse est ici :
    fid = fopen('test.txt');
    for i=1:nlat
        tline = fgetl(fid);
        tmp(:,i) = cell2mat(textscan(tline, '%f'));
    end
    fclose(fid);
     
    for i=1:nlev
        tableau(:,:,i) = tmp(((i-1)*nlon+1):nlon*i,:);
    end  
     
    disp(tableau);

Discussions similaires

  1. code fortran ne pouvant pas lire un fichier txt
    Par mayoub dans le forum Fortran
    Réponses: 8
    Dernier message: 17/03/2013, 18h37
  2. Réponses: 3
    Dernier message: 05/03/2007, 23h54
  3. Lire un fichier .TXT en donnant une URL
    Par Matt2094 dans le forum Langage
    Réponses: 9
    Dernier message: 03/05/2006, 14h35
  4. Lire un fichier txt par http (C sous Linux)
    Par sleg dans le forum Réseau
    Réponses: 4
    Dernier message: 18/10/2005, 11h07
  5. Réponses: 4
    Dernier message: 05/10/2004, 17h11

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