Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在fortran90中填充二维数组_Arrays_Fortran_Fortran90_Montecarlo - Fatal编程技术网

Arrays 如何在fortran90中填充二维数组

Arrays 如何在fortran90中填充二维数组,arrays,fortran,fortran90,montecarlo,Arrays,Fortran,Fortran90,Montecarlo,我有一个关于在Fortran90中填充二维数组的问题。在我的程序中,我提取不同的随机数集,并将它们作为测量值ustar和Tstar的不确定性进行检查,得到uerr和terr。现在我想把uerr和terr放在一个二维数组中,因为我必须重复这个过程n次才能得到不同的数据集(估计误差的蒙特卡罗方法)。如何将uerr和terr分配给阵列?我如何在每次运行程序时迭代进程n次?我尝试给数组“set”索引r和c,但在编译时得到: Warning: Extension: REAL array index at

我有一个关于在Fortran90中填充二维数组的问题。在我的程序中,我提取不同的随机数集,并将它们作为测量值ustar和Tstar的不确定性进行检查,得到uerr和terr。现在我想把uerr和terr放在一个二维数组中,因为我必须重复这个过程n次才能得到不同的数据集(估计误差的蒙特卡罗方法)。如何将uerr和terr分配给阵列?我如何在每次运行程序时迭代进程n次?我尝试给数组“set”索引r和c,但在编译时得到:

Warning: Extension: REAL array index at (1)
我从输入文件中读取ustar和tstar,代码如下:

program stimerr
 implicit none

 character(len=12) filein,fileout
 integer,dimension(1) :: seed = (/4/)
 real, dimension(2) :: num
 integer :: n,h,i
 real, dimension(24,2) :: set 
 real :: pi = 3.14159
 real :: g1,g2,ustar,tstar,uerr,terr

 write(*,'(2x,''File di input .......''/)')
 read(*,'(a12)') filein
 open(unit=120,File=filein)

 set = 0.

 call init_random_seed ()
  do n=1,24
  read(120,*) h,ustar,tstar
  call random_number(num)

  g1 =(sqrt(-2*log(num(1)))*(cos(2*pi*(num(2)))))/10.
  g2 =(sqrt(-2*log(num(1)))*(sin(2*pi*(num(2)))))/10.

  uerr = ustar + g1
  terr = tstar + g2

  write(*,*) set(uerr,terr)


  enddo


close(120)



end program stimerr

错误似乎是不言自明的,您正在尝试使用实变量作为数组索引。
set
的索引应该类似于
set(n,1)
set(n,2)
。顺便说一句,在你尝试写之前,你从来没有分配过任何要设置的内容。非常不清楚你想做什么。虽然我同意你的评论@agentp的主旨,但行
set=0。
确实为
set
的元素赋值。哦,谢谢,我用set(n,:)=uerr set(:,n)=terr更正了这些行,并要求编写数组“set”但现在它为每个循环打印24倍相同的值。如何解决此问题?如果您想引起更多注意,请使用
fortran
标记。此外,如果您有一些特定于此版本的内容,而这些内容在以后的版本中找不到,或者有一些其他特殊性,请使用
fortran90