Ich habe eine Matrix A
als real :: A(7,8)
deklariert und initialisiert, so dass alle Einträge 0.0
sind.Was macht `A (:: 2,3) = -1.0` in Fortran?
Der folgende Befehl bietet keine Kompilierungsfehler.
A(::2,3) = -1.0
Ich stelle fest, dass die betroffenen Spalten nur Spalte 3. Was ist mit den Reihen sein wird? Sind ::2
Zeilen 1
und 2
? Oder etwas anderes?
Ich druckte die Matrix aus, konnte aber das erzeugte Muster nicht verstehen.
hier (auf Vollständigkeit):
do, i=1,7
write(*, "(f5.2)") (A(i,j), j=1,8)
enddo
0.00 i = 1
0.00
-1.00
0.00
0.00
0.00
0.00
0.00 ----
0.00 i = 2
0.00
0.00
0.00
0.00
0.00
0.00
0.00 ----
0.00 i = 3
0.00
-1.00
0.00
0.00
0.00
0.00
0.00 ----
0.00 i = 4
0.00
0.00
0.00
0.00
0.00
0.00
0.00 ----
0.00 i = 5
0.00
-1.00
0.00
0.00
0.00
0.00
0.00 ----
0.00 i = 6
0.00
0.00
0.00
0.00
0.00
0.00
0.00 ----
0.00 i = 7
0.00
-1.00
0.00
0.00
0.00
0.00
0.00
es Betrachtet man nun sieht es aus wie es bei i=1
beginnt und fügt 2-i
, bis sie die Grenzen der Matrix erreicht. Ist das richtig? ?
Bedeutet dies, dass ::2
-1:7:2
entspricht ("1 bis 7 mit einem Schritt von 2)
Verwenden Tag auf -1 [tag: fortran] für bessere sichtbarkeit. Fortran 90 ist nur eine bestimmte (und alte) Version. –