- Fortran 教程
- Fortran - 首页
- Fortran - 概述
- Fortran - 环境设置
- Fortran - 基本语法
- Fortran - 数据类型
- Fortran - 变量
- Fortran - 常量
- Fortran - 运算符
- Fortran - 决策
- Fortran - 循环
- Fortran - 数字
- Fortran - 字符
- Fortran - 字符串
- Fortran - 数组
- Fortran - 动态数组
- Fortran - 派生数据类型
- Fortran - 指针
- Fortran - 基本输入输出
- Fortran - 文件输入输出
- Fortran - 过程
- Fortran - 模块
- Fortran - 本质函数
- Fortran - 数值精度
- Fortran - 程序库
- Fortran - 编程风格
- Fortran - 调试程序
- Fortran 资源
- Fortran - 快速指南
- Fortran - 有用资源
- Fortran - 讨论
Fortran - 操作函数
操作函数是移位函数。移位函数返回数组形状不变,但移动元素。
序号 | 函数和描述 |
---|---|
1 | cshift(array, shift, dim) 它执行循环移位,如果 shift 为正则向左移动 shift 个位置,如果 shift 为负则向右移动。如果 array 是向量,则以自然方式进行移位;如果它是更高秩的数组,则沿维度 dim 的所有部分进行移位。如果省略 dim,则将其视为 1;在其他情况下,它必须是 1 到 n 之间的标量整数(其中 n 等于 array 的秩)。参数 shift 是标量整数或秩为 n-1 的整数数组,其形状与数组相同,但沿维度 dim 除外(由于秩较低而被移除)。因此,不同的部分可以朝不同的方向和不同的位置数量进行移位。 |
2 | eoshift(array, shift, boundary, dim) 它是端部移位。如果 shift 为正,则执行向左移位;如果 shift 为负,则执行向右移位。代替移出的元素,从 boundary 中获取新元素。如果 array 是向量,则以自然方式进行移位;如果它是更高秩的数组,则所有部分的移位沿维度 dim 进行。如果省略 dim,则将其视为 1;在其他情况下,它必须具有 1 到 n 之间的标量整数值(其中 n 等于 array 的秩)。参数 shift 是标量整数(如果 array 的秩为 1),否则它可以是标量整数或秩为 n-1 的整数数组,其形状与数组 array 相同,但沿维度 dim 除外(由于秩较低而被移除)。 |
3 | 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
fortran_arrays.htm
广告