Matrix 用Fortran编写矩阵

Matrix 用Fortran编写矩阵,matrix,fortran,Matrix,Fortran,我需要用FORTRAN输出一个矩阵。我有一个计算值的工作代码,但是我得到的不是一个矩阵,而是一列。矩阵很大,ixj=~2000x2000 以下是我的示例代码: open(19, file="results1.txt", status="old", position="rewind", & action="write") do j=0,p do i=0,o write(19,*) mat_user_yield_surface(d, eps(i), deps(j),

我需要用FORTRAN输出一个矩阵。我有一个计算值的工作代码,但是我得到的不是一个矩阵,而是一列。矩阵很大,ixj=~2000x2000

以下是我的示例代码:

  open(19, file="results1.txt", status="old", position="rewind", 
 & action="write") 

  do j=0,p
  do i=0,o
  write(19,*) mat_user_yield_surface(d, eps(i), deps(j), 200.0d0)
  end do
  end do

  close(19)

使用隐含的do循环:

do j=0,p
   write(19,'(2000g22.14)') (mat_user_yield_surface(d, eps(i), deps(j),200.0d0),i=0,o)
end do
我建议不要使用“o”作为变量名,因为它很容易与零混淆。

这个“write(19),(2000g22.14)”非常有效!谢谢最后的代码是:

  open(19, file="results1.txt", status="old", position="rewind",
 & action="write") 

  do j=0,p
  write(19,'(2000g22.14)') (mat_user_yield_surface(d, eps(i), 
 & deps(j), 200.0d0), i=0,o)
  end do

  close(19)

第一个open()write()close()序列将创建第一个空行。此外,不需要在循环中打开和关闭文件。要避免第一个空行:open()do write()enddo close()。要编写2d数组,谷歌it:do,i=1,m write(*,“100g15.5”)(矩阵(i,j),j=1,n)EndDo可能的重复谢谢!这帮了大忙,至少代码的运行速度比不停地打开和关闭文件快得多。“replace”doest work due:error#7589:此connect-spec中的char expr不是有效值。[“replace']好的,很酷。您应该为此使用一种格式,例如:
write(19),(2000g22.14)
。这里的计数
2000
可以是任何足够大的数字,如果编译器支持,也可以是“*”。添加了一个格式字符串来处理francescalus和agentp的注释。