如何在fortran中拆分数组?

时间:2017-05-27 00:23:20

标签: fortran

我制作了一个带有随机值的10x10数组。 使用fortran 90。

编辑:我找到了解决问题的方法,当它处于更加流畅的状态时,我会添加它。

      real :: x
      integer, dimension(10,10) :: matrix
      integer d,f,j,sum

      do d=1,10
          do f=1,10
              call RANDOM_NUMBER(x)
              j = FLOOR(10*x)  
              matrix(d,f) = j
              sum= sum + j
              write(*,*)'RND number', matrix(d,f)
          end do
      end do
      write(*,*)'Sum of all elements in the array: ', sum

现在,我要做的是 - 创建2个名为array1和array2的新数组,它们都是5x10,包含1-5和初始数组的6-10。

我遇到的这个问题是更大的任务中的一步,它涉及将新阵列发送到从属节点(使用MPI),对它们进行一些工作,并将结果发送回主节点。但这超出了这个问题的范围。

1 个答案:

答案 0 :(得分:1)

下次发布您所做的事情......

 integer, dimension(10,10) :: matrix
 integer, dimension(10, 5) :: trunk
 integer, dimension(10, 5) :: tail

 ...
 trunk = matrix(:, 1: 5)
 tail  = matrix(:, 6:10)

或者......也许EQUIVALENCE可以工作,你必须尝试,因为我可能有错...

EQUIVALENCE (Matrix,Trunk), (Tail,Matrix(6,1))
@Vladimir说,'如果你只是想避免关于你的编码风格(我倾向于给予)的未经请求的建议,你可以这样说。'我也可以这样做。

SUM绝对是PURE或PURE ELEMENTAL内在的 我不确定RANDOM_NUMBER ...
但这可能更时尚,因为你可以省略循环:

Matrix = RANDOM_NUMBER(x) 
WHERE (Matrix <= <somefloor>)...
mySum = SUM(Matrix)