我正在尝试在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)感兴趣,因此不能将其存储在数组中。
假设z
是一个包含nx
个元素的数组(您忘了显示声明),那么您的write
语句应为
write(45,*) (z(m), m = 1, nx)
PS:请勿使用特定的固有名称。使用sqrt
代替dsqrt
。使用exp
代替dexp
。不要使用dfloat
,因为它是不必要的。