当前位置: 首页 > 文档资料 > Fortran 中文教程 >

Manipulation

优质
小牛编辑
139浏览
2023-12-01

操纵功能是移位功能。 shift函数返回数组的形状不变,但移动元素。

Sr.No功能说明
1

cshift(array, shift, dim)

如果换档是正的,它通过向左的换档位置执行循环换档,如果是负的则向右执行循环换档。 如果数组是向量,则移位以自然的方式完成,如果它是更高等级的数组,则移位在沿维度暗的所有部分中。 如果缺少dim,则认为它是1,在其他情况下,它必须是1和n之间的标量整数(其中n等于数组的等级)。 参数shift是标量整数或等级n-1的整数数组,并且与数组的形状相同,除了沿着维度dim(由于较低的等级而被移除)。 因此,不同的部分可以在各个方向上移动并具有不同数量的位置。

2

eoshift(array, shift, boundary, dim)

这是结束班次。 如果移位为正,则执行向左移位;如果移位为负,则执行向右移位。 移出的元素不是从边界中取出的新元素。 如果数组是向量,则移位以自然的方式完成,如果它是更高等级的数组,则所有部分的移位沿着维度暗淡。 如果缺少dim,则认为它是1,在其他情况下,它必须具有介于1和n之间的标量整数值(其中n等于数组的等级)。 如果数组具有等级1,则参数shift是标量整数,在另一种情况下,它可以是标量整数或等级n-1的整数数组,并且具有与数组数组相同的形状,除了沿着维度dim(被删除)因为排名较低)。

3

transpose (matrix)

它转换矩阵,它是秩2的数组。它替换矩阵中的行和列。

例子 (Example)

以下示例演示了该概念 -

program arrayShift
implicit none
   real, dimension(1:6) :: a = (/ 21.0, 22.0, 23.0, 24.0, 25.0, 26.0 /)
   real, dimension(1:6) :: x, y
   write(*,10) a
   x = cshift ( a, shift = 2)
   write(*,10) x
   y = cshift (a, shift = -2)
   write(*,10) y
   x = eoshift ( a, shift = 2)
   write(*,10) x
   y = eoshift ( a, shift = -2)
   write(*,10) y
   10 format(1x,6f6.1)
end program arrayShift

编译并执行上述代码时,会产生以下结果 -

21.0  22.0  23.0  24.0  25.0  26.0
23.0  24.0  25.0  26.0  21.0  22.0
25.0  26.0  21.0  22.0  23.0  24.0
23.0  24.0  25.0  26.0   0.0   0.0
0.0    0.0  21.0  22.0  23.0  24.0

例子 (Example)

以下示例演示了矩阵的转置 -

program matrixTranspose
implicit none
   interface
      subroutine write_matrix(a)
         integer, dimension(:,:) :: a
      end subroutine write_matrix
   end interface
   integer, dimension(3,3) :: a, b
   integer :: i, j
   do i = 1, 3
      do j = 1, 3
         a(i, j) = i
      end do
   end do
   print *, 'Matrix Transpose: A Matrix'
   call write_matrix(a)
   b = transpose(a)
   print *, 'Transposed Matrix:'
   call write_matrix(b)
end program matrixTranspose
subroutine write_matrix(a)
   integer, dimension(:,:) :: a
   write(*,*)
   do i = lbound(a,1), ubound(a,1)
      write(*,*) (a(i,j), j = lbound(a,2), ubound(a,2))
   end do
end subroutine write_matrix

编译并执行上述代码时,会产生以下结果 -

Matrix Transpose: A Matrix
1  1  1
2  2  2
3  3  3
Transposed Matrix:
1  2  3
1  2  3
1  2  3