rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Importation de matrice sous fortran

Oscar, le lundi 22 avril 2002 à 18:13:47
Voilà, je sais ouvrir des fichiers de données ligne ou colonne sous fortran mais je n'arrive pas à lire des matrices.
Par exemple, je suis sous matlab, j'exporte un fichier truc.txt qui contient une matrice 3x3. Je ne sais récuprérer qu'une ligne ou une colonne.

Si quelqu'un sait comment il faut faire (à part transformer ma matrice en succession de colonnes au format 1x9 par exemple), pourrait-il m'envoyer l'instruction à taper sous fortran...Merci d'avance!!!
Répondre à Oscar  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marden, le lundi 22 avril 2002 à 22:27:10
DIMENSION MATR(3,3)
IUNIT = 10
OPEN(IUNIT,NAME='truc.txt',ERR=label1)
C --- Remplissage par ligne (1,1), (1,2), (1,3), (2,1), (2,2), ...
READ(IUNIT,*[,ERR=label]) (((MATR(I,J),J=1,3),I=1,3)

où "*" = format automatique (valeurs séparées par un espace au moins,
sinon format en "Iw","Fw.d","Ew.d" avec facteur de multiplication, comme indiqué dans tout bon manuel
Répondre à Marden

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
osacr, le mardi 23 avril 2002 à 09:01:48
Merci encore, nul doute que cette astuce va me permettre de gagner un temps précieux!
Répondre à osacr

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
amandine, le vendredi 11 janvier 2008 à 13:48:39
Bonjour,
Je débute en fortran 77 et je rencontre quelques problèmes. Je souhaite écrire un matrice de zéro de plusieurs lignes et de 32 colonnes dans un fichier texte mais je n'y arrive pas. J'ai essayé plusieurs techniques mais rien y fait.
J'ai d'abors écrit:
parameter (NBLIG=10,NBCOL=32)
real*8 matrice(NBLIG,NBCOL)

IL=0
IC=0

open(unit=1,file='matrice.dat',status='new')

6 write(1,2) (matrice(IL,1:NBCOL))
2 format(32(x,F8.5))
IL=IL+1
IF(IL.EQ.NBLIG) GOTO 3
GOTO 6
3 close (unit=1)
end

mais j'ai ce message d'erreur "Output statement overflows record". J'ai essayé d'utilisé iunit mais sans plus de succès.
Si quelqu'un sait comment je peux faire, pourrait-il m'envoyer quelque éléments de réponse....
merci d'avance
Répondre à amandine

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marden, le vendredi 11 janvier 2008 à 15:01:56
En Fortran, par défaut, les tableaux ou les matrices ont des indices commençant à 1.
Dans tes ordres d'écriture, tu utilises l'indice IL, initialisé à 0, ce qui cherche à accéder à une zone mémoire hors de la matrice. Si cette zone est protégée, il appaîtra un message du style "access violation". Sinon, le résultat sera n'importe quoi, mais sans rien qui le signale !

Chaque enregistrement en sortie occupe 32 x 9 octets soit 288 octets. Il faut sans doute préciser une taille d'enregistrement logique dans l'ordre OPEN (vérifier dans le manuel, si cette taille n'est pas limitée à 256).

Voilà un peu comment j'aurais écrit ce bout de code (tout en majuscules, ajout de commentaires, alignement et/ou indentation, ...) ... bien que n'ayant pas touché au Fortran depuis plus de 10 ans :
 
     PARAMETER (NBLIG=10,NBCOL=32)
     REAL*8 MATRICE(NBLIG,NBCOL) 
C --- Remplissage de la matrice
C     (ne pas compter sur le chargement du programme par la machine)
      DO 20 IL = 1, NBLIGN
        DO 10 IC = 1, NBCOL
          MATRICE(IL,IC) = 0.
   10   CONTINUE
   20 CONTINUE
C --- Sauvegarde sur fichier :
      OPEN(UNIT=1,FILE='matrice.dat',STATUS='new') 
C     DO 100 IL = 1,NBLIGN
C       WRITE(1,2) (MATRICE(IL,IC),IC=1,NBCOL))
C 100 CONTINUE
C --- la même chose que ci-dessus en plus compact :
      WRITE(1,2) ((MATRICE(IL,IC),IC=1,NBCOL),IL=1,NBLIG)
      CLOSE (UNIT=1)
    2 FORMAT(32(X,F8.5))
      END


NB : le forum permet de "conserver la mise en forme du texte sélectionné".
Répondre à Marden

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
amandine, le vendredi 11 janvier 2008 à 16:40:06
Merci pour ces informations et le code que tu m'a fourni est très bien mais il ne résout pas le problème car j'ai le même message d'erreur. Comme tu l'as dit, c'est la taille des données en sortie qui pose un problème. Malheureusement, je suis obligé d'utiliser ce format de sortie. Sais-tu si il existe un moyen d'augmenter la taille d'enregistrement logique dans l'ordre OPEN?
Merci d'avance
Répondre à amandine

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marden, le vendredi 11 janvier 2008 à 17:31:54
Si le langage est à peu près universel, il n'en est pas de même de l'implémentation des fichiers et de leurs fonctions d'accès depuis un langage évolué (non visibles du programmeur), qui dépendent de chaque machine ("machine dependant").
Il faut donc consulter le "Programmer's guide" correspondant, et notamment les chapitres récapitulant les messages d'erreur.
A défaut d'en avoir sous la main, on peut en trouver sur Internet, avec les mots-clés "programmer's guide" Fortran {type-de-machine}...

Exemple de paramètres de la directive "OPEN" :
OPEN( 21, ..., RECL={en octets}, FORM='FORMATTED')


* RECL permet d'introduire la taille de l'enregistrement.
* FORM permet d'indiquer que le fichier contiendra de l'ASCII (ou autre), sinon ce sera du "binaire" (= image mémoire des nombres). double précision)
Répondre à Marden

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 amandine, le vendredi 18 janvier 2008 à 13:20:28
Je n'avais pas encore eu le temps de me repencher sur mon problème de matrices. Tu avais raison Marden, l'utilisation de RECL m'a permis de choisir la taille de l'enregistrement et ainsi de résoudre mon problème. Merci beaucoup pour ton aide.
Répondre à amandine
Comment programmer l'inversion d'une matrice (Résolu)Bonjour, Je cherche a programmer une inversion d'une matrice nxn sous php. j'aimerais avoir un point de vue sur cela. car j'en ai besoin pour mettre en ligne une application que j'ai développé. www.commentcamarche.net/forum/affich-4597308-comment-programmer-l-inversion-d-une-matrice
Resolution en fortran (Résolu)Bonjour, j'ai besoin d'un programme en fortran qui resoud l'eqution qui s'ecrit sous la forme : AijFij+BijFij+CijFij=Dij avec F variable recherché ; A.B.C et D sont des matrices tridiagonaux merci et c gentil de votre part www.commentcamarche.net/forum/affich-6610929-resolution-en-fortran
Algorithme produit matrice vecteur (Résolu)Bonjour, j'ai besoin du principe de l'algorithme qui permet de faire le produit matriciel entre une latrice et vecteur. www.commentcamarche.net/forum/affich-5034293-algorithme-produit-matrice-vecteur
Fichiers sqmdata**.sqm et sqmnoopt**.sqmLes fichiers sqmdata**.sqm et sqmnoopt**.sqm Vous avez peut-être remarqué un nombre important de fichiers au format SQM sur votre disque dur. Ceux-ci sont sous la forme sqmdata**.sqm ou sqmnoopt**.sqm (** sont deux chiffres aléatoires) A la... www.commentcamarche.net/faq/sujet-8488-fichiers-sqmdata-sqm-et-sqmnoopt-sqm
Défragmenter son disque durLa défragmentation consiste à regrouper les fragments de fichiers éparpillés sur le disque afin d'optimiser les temps d'accès du disque dur lors de la lecture de fichiers de taille importante. Afin de défragmenter, des algorithmes élaborés sont... www.commentcamarche.net/faq/sujet-58-defragmenter-son-disque-dur
[Matériel] Packard Bell: Restauration, masterPackard Bell : Restauration, master Récapitulatif des posts présents sur les différents forums Sommaire Avant propos 1 - POURQUOI EST-IL SI IMPORTANT DE GRAVER LA PARTITION CACHEE ? 2 - COMMENT RE-RETATOUER ? 2.1 - Si vous avez gravé les... www.commentcamarche.net/faq/sujet-1380-materiel-packard-bell-restauration-master
Créer une matrice diagonale dans excel? (Résolu)bonjour, j'ai un vecteur 37*1 qui est donc une colonne de 37 lignes sur excel, et je voudrais que chacun des éléments de ce vecteur se retrouve sur la diagonale d'une matrice carrée 37*37 avec que des zéros autour. je pense qu'il faut... www.commentcamarche.net/forum/affich-1713230-creer-une-matrice-diagonale-dans-excel
Télécharger EChanblardCe logiciel est une modification de eMule. Il permet d'obtenir des taux de transfert plus importants qu'avec eMule et il est compatible eDonkey et eMule. www.commentcamarche.net/telecharger/telecharger-34055171-echanblard
Télécharger Veoh DownloaderPlusieurs sites tels que Youtube, Dailymotion et autres proposent des vidéos gratuites que vous pouvez télécharger gratuitement sur votre ordinateur légalement. Le seul inconvénient, qui est tout de même un point important est la qualité d'images des... www.commentcamarche.net/telecharger/telecharger-34056434-veoh-downloader
Epson LX-300+IIMatricielle, Plusieurs formats acceptés, 0 dpi, Parallel, Serial, USB,Vitesse d'impression noir et blanc: ,Vitesse d'impression couleur: ,Niveau sonore (impression):49.0 dB,Connexion:Parallel, Serial, USB,Type d'imprimante:Matricielle,Format... www.commentcamarche.net/guide-achat/epson-lx-300-ii-744562-fiche-technique
Epson LQ-2090Matricielle, Plusieurs formats acceptés, 0 dpi, Parallel, USB,Divers: ,Compatibilité:PC,Fabricant:Epson,Poids:9.5 Kg,Dimensions (LxHxP):58.9x16.75x35 cm,Consommation (impression):42.0 W,Imprimante réseau:Oui (Option),Vitesse d'impression noir et... www.commentcamarche.net/guide-achat/epson-lq-2090-217504-fiche-technique
Toutes les réponses pour « importation de matrice sous fortran »