处理函数平移功能。移位函数返回一个数组不变的形状,但移动元素。
函数 | 描述 |
---|---|
cshift(array, shift, dim) | 它执行循环移位由移位置的左边,如果移位是正和到右侧,如果它是负的。如果阵列是一个矢量移位正在做以自然的方式中,如果它是一个较高级的阵列则移是沿着维数dim的所有部分。若dim缺少它被认为是1,在其它情况下它必须是1和n(其中n等于阵列的等级)之间的标量整数。该参数换档是一个标量整数或秩n-1个整数的数组和形状相同的阵列中,除沿维数dim(在较低级的,因为它被移除)。不同的部分,因此可以转移在各个方向上,并与各种数目的位置。 |
eoshift(array, shift, boundary, dim) | 这是端关闭的转变。它执行向左移动,如果移位是正和到右侧,如果它是负的。相反的元素移出新元素均取自边界。如果阵列是一个矢量移位正在做以自然的方式中,如果它是一个较高级的阵列,在所有各节中的移位是以及该维度暗淡。若 dim 丢失,它被认为是1,但在其它情况下,它为1和n(其中n等于阵列的秩)之间有一个标量的整数值。该参数换档是一个标量整数,如果阵列具有秩1,在其他情况下,它可以是一个标量整数或秩n-1和形状相同的阵列排列的与除沿维数dim 的整数数组(其被取出因为较低级的)。 |
transpose (matrix) | 其转置矩阵,这是秩2的阵列它取代了的行和列矩阵。 |
示例
下面的例子演示了这一概念:
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
示例
下面的例子演示了转置矩阵:
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