Fortran liest Datei in Array - transponierte Dimensionen

8

Ich versuche, eine Datei in einem Fortran-Programm in den Speicher einzulesen. Die Datei hat N rows mit zwei Werten in jeder Zeile. Dies ist, was ich gerade mache (es kompiliert und läuft, gibt mir aber eine falsche Ausgabe):

%Vor%

Was ich zu bekommen hoffte, waren die Daten, die in die Variable cs geladen wurden, mit Zeilen als erstem Index und Spalten als zweiter, aber wenn der obige Code läuft, gibt er zuerst eine Zeile mit zwei "linken Spalten" -Werten aus, dann eine Zeile mit zwei "rechten Spalten" -Werten, dann eine Zeile mit den nächsten beiden "linken Spaltenwerten" und so weiter.

Hier ist eine mehr visuelle Beschreibung der Situation:

%Vor%

Ich habe versucht, die Indizes bei der Zuordnung von cs zu wechseln, aber mit den gleichen Ergebnissen (oder segfault, abhängig davon, ob ich auch Indizes in der print-Anweisung umschalte). Ich habe auch versucht, die Werte Zeile für Zeile zu lesen, aber wegen des unregelmäßigen Formats der Datendatei (durch Kommas getrennt, nicht mit Spalten ausgerichtet) konnte ich das überhaupt nicht funktionieren.

Wie lese ich die Daten in den Speicher, um die gewünschten Ergebnisse zu erzielen?

    
Tomas Lycken 08.04.2013, 14:32
quelle

1 Antwort

9

Ich sehe kein Komma in Ihrer Datendatei. Bei der listengesteuerten Eingabe sollte es sowieso keinen Unterschied machen. Versuch es einfach so zu lesen, wie du es schreibst.

%Vor%

Sonst, wenn Sie das gesamte Array in einem Befehl lesen, liest es es in der Reihenfolge der Spalten, d. h. cs(1,1), cs(2, 1), ....cs(N,1), cs(1, 2), cs(2,2), ... Dies ist die Reihenfolge, in der das Array im Speicher abgelegt wird.

    
Vladimir F 08.04.2013, 15:16
quelle

Tags und Links