【问题标题】:Fortran two dimensional array issueFortran二维数组问题
【发布时间】:2014-07-28 16:17:53
【问题描述】:

我试图从二维数组中获取值,但我在索引处的值不是我得到的。这是程序:

 subroutine stlstp(y,n,np,ns,nt,nl,isdeg,itdeg,ildeg,nsjump,ntjump,nljump,ni,userw,rw,season,trend,work)

!     implicit none
! Arg
      integer n,np,ns,nt,nl,isdeg,itdeg,ildeg,nsjump,ntjump,nljump,ni
      logical userw
      double precision y(n),rw(n),season(n),trend(n),work(20,5)
! Var
      integer i,j



     do 80 j = 1,1
         do 1 i = 1,n
              work(i,1) = y(i)-trend(i)
 1       continue
         call stlss(y,n,np,ns,isdeg,nsjump,userw,rw,season)

         PRINT *, 'WORK 1,2 ....',work(1,2)
         PRINT *, 'WORK ....',work
         call stlfts(work(1,2),n+2*np,np,work(1,3),work(1,1))

PRINT *, 'WORK...',work打印

根据这个输出,PRINT *, 'Work1,2....' 不应该返回193.0000 吗?但我得到0.000000 作为输出。有人可以帮忙吗?我错过了什么?

【问题讨论】:

  • @casey:用代码更新问题。工作阵列为 20,5 形状。我希望现在它有意义。

标签: fortran fortran90 gfortran subroutine


【解决方案1】:

Fortran 对数组使用列优先排序,因此对于 (20,5) 的形状,元素 (1,2) 是数组的第 21 个元素。对此感到困惑的是,print *, 将按行打印元素。您圈出的元素是 (2,1)。元素 (1,2) 是位于输出图像第 5 行第一列的0.000

【讨论】:

  • 啊!我的愚蠢错误。我读过关于专栏专业的文章,但在实践中没有意识到。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 2012-09-13
  • 2019-08-08
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
相关资源
最近更新 更多