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

Fortran Discussion :

[Fortran 77] Filtrer une matrice


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut [Fortran 77] Filtrer une matrice
    Bonjour à tous,

    Voilà, je suis actuellement en train de faire de la programation sous fortran 77 mais je ne sais pas comment lui indiquer une période de temps. Je m'explique :

    J'ai une matrice avec 45 000 lignes (qui correspondent à 45 000 séismes enregistrés) et 6 colonnes (an, jour, latitude, longitude, magnitude) et j'aimerais que fortran ne me garde juste les séismes pour une période donnée (Avril 2000 jusqu'à Décembre 2001) et pour une zone géographique donnée ( lat : 38 14' à 38 08' et lon : 21 58' à 22 06') Mais comment faire ? J'ai pas mal potassé dans les bouquins mais j'ai rien trouvé qui puisse m'aider ! j'en appelle donc à votre grand savoir !

    merci d'avance

  2. #2
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Si j'ai bien compris ce que tu veux c'est filtrer ta matrice !

    Tu as une manière très simple et bien bourrine de faire ça. Tu fais une boucle sur les séismes (donc sur les lignes de ta matrice) et pour chaque ligne avec un petit test (un if qui teste l'année la magnitude ou autre) tu choisis d'écrire la ligne dans une nouvelle matrice ou alors tu fais rien.

    Tu ne trouveras jamais ce genre de choses dans les bouquins. Les bouquins te donne la syntaxe, à toi de savoir les utiliser pour dire à l'ordinateur ce que tu veux qu'il fasse. Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    do i=1,ligne
       if( année == ce que tu veux ) then
          nouvelle matrice = ancienne matrice (ligne i)
       else
          tu fais rien
       end if
    end do

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut
    Merci de ta réponse aussi rapide !
    C'est ce que j'avais en tête mais une autre petite question :
    comment dans ma commande if je lui annonce deux années ?
    C'est à dire l'année 2000 ET 2001 ? de plus pour les mois ? en effet j'aimerai de Avril 2000 à Décembre 2001, je fais donc une boucle après celle des mois ? en effet une fois qu'il aura filtré les années il filtrera ensuite les mois ? c'est ça ?

    Merci d'avance

  4. #4
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Tu as une colonne mois et une année ?

    tu peux tester les deux en même temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( a == 1 .and. b == 1 ) then
    veut dire si a = 1 et b=1, alors

    donc dans ton cas tu peux adapter pour que ça prenne en compte le mois et l'année. De manière plus simples tu peux faire des if imbriquée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if( annee == 2001 .or. annee == 2000 ) then
         if ( mois > 6 .or. mois < 10 ) then
             la tu récupère tes infos
         end if
    end if
    Dans ce bout de code tu ne prend que les séismes des année 2000 et 2001 du mois de juin au mois d'octobre !

    Vu que tu en es au début de fortran une matrice est certainement plus pratique car plus facile à utiliser. Cependant je te conseille de lire un cours sur les structures (tableau de variables de différents type). Je pense que dans ton cas ça peut être utile ... tu verras par toi même.

    Tu peux aussi jeter un oeil à la FAQ

    http://fortran.developpez.com/faq/?filtre=OOOOOOOO

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut
    Merci encore !

    Je vais faire mon lourd mais dans la boucle que tu as écris, comment je peux lui indiquer de prendre les mois allant de 4 à 12 pour 2000 et de 1 à 12 pour 2001 ?

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    en faisant comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (annee == 2000 .and. (mois>=4 .and. mois<=12)) then
        ...
    elseif (annee == 2001) then
        ...
    end if

Discussions similaires

  1. Diagonalisation d'une matrice en Fortran 90
    Par janot92 dans le forum Fortran
    Réponses: 0
    Dernier message: 07/05/2013, 15h57
  2. Réponses: 6
    Dernier message: 08/12/2008, 12h22
  3. Réponses: 5
    Dernier message: 05/04/2008, 12h49
  4. comment filtrer une table avec deux criteres càd 2 colonnes
    Par athmane2dz dans le forum Bases de données
    Réponses: 7
    Dernier message: 28/07/2004, 15h25
  5. Déclarer une matrice
    Par joy dans le forum C
    Réponses: 7
    Dernier message: 09/12/2002, 00h42

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