如何在fortran中拆分数组?

如何在fortran中拆分数组?,fortran,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)

我制作了一个带有随机值的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
现在,我想做的是——创建两个新数组,分别称为array1和array2,它们都是5x10,并且包含初始数组的第1-5列和第6-10列


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

下次发布您所做的事情时

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

 ...
 trunk = matrix(:, 1: 5)
 tail  = matrix(:, 6:10)
或者。。。也许等价可以工作,你必须尝试,因为我可能有错误

EQUIVALENCE (Matrix,Trunk), (Tail,Matrix(6,1))
@弗拉基米尔说,“如果你只是想避免不请自来的关于你的编码风格的建议(我倾向于给出),你可以这么说。”我也可以这么做

总和肯定是纯粹的或纯粹的元素内在的。
我不确定随机数…
但这可能更时尚,因为您可以省略循环:

Matrix = RANDOM_NUMBER(x) 
WHERE (Matrix <= <somefloor>)...
mySum = SUM(Matrix)
矩阵=随机数(x)

哪里(矩阵我没有心情为你做作业,除非你花时间展示一些例子,说明你试图将数组拆分并卡住。我决定不这样做,因为我的方法都没有编译。我觉得我会被Fortran的老手撕成碎片。我想出了一个简单的解决方案,我使用数组维度作为参数我原以为我需要创建单独的数组,但实际上我不需要。当我的解决方案更完善一点时,我会发布一个答案。“我决定不这样做,因为我没有编译任何方法。我觉得我会被Fortran的老手撕成碎片。”我们来到这里,是因为我们想帮助人们编写代码,真的。我们只是不想为他们编写代码。如果你只是想避免不请自来的关于你的编码风格的建议(我倾向于给出),你可以这么说。还要注意的是,在循环之前,你忘记了将sum设置为0。我不确定
等价性
是否是解决Fortran编码问题的好方法。我很确定这不是解决这个问题的好方法。