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