Ich bin ziemlich neu in Fortran, also könnte dies eine naive Frage sein. Ich würde gerne eine riesige .TXT-Datei mit einer # von Zeilen = 540001 lesen. Die Daten stammen von einem Schallanemometer mit Messungen von Geschwindigkeit und Temperatur als u, v, w, T in fünf Höhen. Hier sind die ersten Zeilen der Datei:Wie kann ich Daten aus einer Textdatei lesen und Teile/Variablen in verschiedene Textdateien speichern/schreiben?
"2011-07-10 09:30:00",9838,1.132,2.30225,-0.5635,29.18585,0.30275,0.689,-0.01125,29.67004,0.2165,-0.25475,0.12725,29.8923,0.51425,3.0405,-0.58375,29.5242,-0.0085,3.6235,-0.65175,29.61972,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
"2011-07-10 09:30:00.05",9839,-0.21325,3.22775,-0.17,29.10953,0.33925,0.6867501,-0.0015,29.67874,0.1715,-0.196,0.1235,29.8923,0.035,2.6915,-0.3845,29.82806,-0.102,3.5505,-0.15825,29.61795,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
"2011-07-10 09:30:00.1",9840,0.403,3.1195,-0.37175,29.22574,0.06550001,0.6655,0.1275,29.76208,0.196,-0.2,0.1,29.901,0.16225,2.31525,-0.5975,29.69263,0.24175,3.11925,-0.3725,29.57977,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
etc ...
Ich mag würde speichern/schreiben die Matrizen u (5,540001), v (5,540001), w (5,540001), und T (5,540001), damit ich einige Berechnungen und Diagramme machen kann. Hier ist, was ich verwende:
PROGRAM READ_MAIZE
IMPLICIT NONE
REAL,DIMENSION(:,:),Allocatable :: u_r, v_r, w_r, T_r
CHARACTER(len=*) :: fname
fname='FINALDATA.txt'
open(unit=1,file=fname,status='old',action='read')
do i=1,540001
READ(1,*)timestamp(i),count(i),u_r(5,i),v_r(5,i),w_r(5,i), &
T_r(5,i),u_r(2,i),v_r(2,i),w_r(2,i),T_r(2,i), &
u_r(1,i),v_r(1,i),w_r(1,i),T_r(1,i), &
u_r(3,i),v_r(3,i),w_r(3,i),T_r(3,i), &
u_r(4,i),v_r(4,i),w_r(4,i),T_r(4,i),flags(1:20)
end do
close(1)
WRITE(U_maize,'(A,I7.7,A,I7.7,A)'), &
'.txt'
open(11,file=U_maize,status='unknown',action='write')
write(11,'(F20.14)')(u_r)
end
niemals den Auftrag in U_r dagegen (5, i), gefolgt von U_r (2, i) ... (sie entsprechen nur auf verschiedene Höhen, die nicht in Ordnung sind). Das funktioniert nicht.
Willkommen bei StackOverflow. Bitte achten Sie darauf, Ihren Beitrag zu formatieren. Verwenden Sie geeignete Tags. Verwenden Sie immer tag [tag: fortran] und fügen Sie gegebenenfalls eine bestimmte Version hinzu. –
* "Das funktioniert nicht" * sagt uns nichts Nützliches. Was geschieht? Irgendeine Fehlermeldung? Falsches Ergebnis? Wenn das Ergebnis falsch ist, wie sieht es aus? –
Sie haben Fortran 77 angefordert, aber Ihr Code entspricht nicht Fortran 77. Ihre Verwendung von '&' folgt Free-Form-Quelle von Fortran 90 und neuer. –