Matrix 如何将20x20矩阵转换为25个4x4矩阵?

Matrix 如何将20x20矩阵转换为25个4x4矩阵?,matrix,fortran,Matrix,Fortran,!____________生成一维阵列_________ program oned_array implicit none integer i,j,k,seed,n,l parameter(n=10) real r0(n),s1(n) real m seed=4965817 我认为这将适用于一维数组。 但是矩阵该怎么办呢 m是我想要为每个子阵列计算的数量 n是较旧的矩阵尺寸,即10。(10x10矩阵) M是我想计算的东西 这将把旧的矩阵转换成2*2矩阵

!____________生成一维阵列_________

   program oned_array
   implicit none
   integer i,j,k,seed,n,l
   parameter(n=10)
   real r0(n),s1(n)
   real m
   seed=4965817
我认为这将适用于一维数组。 但是矩阵该怎么办呢

m
是我想要为每个子阵列计算的数量

n是较旧的矩阵尺寸,即10。(10x10矩阵) M是我想计算的东西 这将把旧的矩阵转换成2*2矩阵,对于每个矩阵,我得到m。
五个2*2矩阵。

直接使用切片提取子矩阵

   do i=1,n
         r0(i)=ran(seed)
         write(20,*)r0(i)     
   enddo
   k=1
   l=n/5
   do i=1,5
      m=0
      do j=k,l  
      s1(i)=r0(j)
      m=m+s1(i)
      write(21,*)i,j,s1(i)
      enddo

      k=l+1
      l=l+n/5

      write(22,*)i,m
   enddo

   stop
   end
打印子矩阵以供查看(右下方
submat=…
上一行)

输出,为空间编辑

write(*,'(a,2(i2,a1))') 'at (', i, ',', j, ')'
    do m = 1, sx
        do n = 1, sy
            write(*, '(i4)', advance='no') submat(m,n)
        end do
        write(*, *)
end do
at(1,1) 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 ... 在(5,9) 14 15 16 17 15 16 17 18 16 17 18 19 17 18 19 20 ... at(17,17) 34 35 36 37 35 36 37 38 36 37 38 39 37 38 39 40
下一个学习步骤是对作业使用
重塑
。它是一种更高级别的工具,功能强大,可用于各种任务。 这是一个更严肃的工作,但这是一个开始的方式

注意,上面简单的使用初始化矩阵,也是解决问题的一种方法。

有关此示例的完整讨论(初始化矩阵),请参阅。

请构造代码(缩进)。你说的“皈依”是什么意思?您想要25个独立的4x4矩阵吗?还是一个25x4x4?还根据什么规则转换?你能解释一下你的问题吗?如果你仔细而巧妙地提出你的问题,它将有助于你得到回答。@zdim我需要25个矩阵(每个4x4)@zdim谢谢。让我检查一下。@zdim但是,它将一维数组中的元素重新分配到多维数组中。我需要25个独立的矩阵。你的代码是什么意思?变量在哪里声明?您应该看到
重塑()
,并以正确的方式调用25次。@ben10非常欢迎。我希望我的评论不是不支持。我不是那个意思,恰恰相反。
write(*,'(a,2(i2,a1))') 'at (', i, ',', j, ')'
    do m = 1, sx
        do n = 1, sy
            write(*, '(i4)', advance='no') submat(m,n)
        end do
        write(*, *)
end do
at ( 1, 1) 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 ... at ( 5, 9) 14 15 16 17 15 16 17 18 16 17 18 19 17 18 19 20 ... at (17,17) 34 35 36 37 35 36 37 38 36 37 38 39 37 38 39 40