在一行中写数据

问题描述 投票:0回答:1

我正在尝试在fortran的一行中编写变量z。如您所见,z是g * h的乘积。我的问题是我想在行z11,z12,z13,... zn1,x中打印。第一个数字是i的值,第二个数字是j的值。这是我尝试过的:

do i=1,ny
  do j=1,nx
     s=xmin + alongintx * (dfloat(j)-1.d0)
     t=ymin + alonginty * (dfloat(i)-1.d0)
     g=(1.d0/(desvestx*dsqrt(2.d0*pi)))*dexp(-(s-amedx)**2/
     $           (2.d0*desvestx**2))
     h=(1.d0/(desvesty*dsqrt(2.d0*pi)))*dexp(-(t-amedy)**2/
     $           (2.d0*desvesty**2))
     z=g*h
     write(45,*)(z,m=1,nx)
   end do
end do

问题是它在一行中打印相同的值nx次。我如何解决而不将数据保存在数组中?我会对处理大量数据(nx和ny> 10000)感兴趣,因此不能将其存储在数组中。

fortran gfortran
1个回答
0
投票

假设z是一个包含nx个元素的数组(您忘了显示声明),那么您的write语句应为

write(45,*) (z(m), m = 1, nx)

PS:请勿使用特定的固有名称。使用sqrt代替dsqrt。使用exp代替dexp。不要使用dfloat,因为它是不必要的。

© www.soinside.com 2019 - 2024. All rights reserved.