lzth.net
当前位置:首页 >> FortrAn中可以定义二维变量数组吗 >>

FortrAn中可以定义二维变量数组吗

随便定义一个不重名的变量就是了注意i~n规则

定义一个 m*n 的二维复数数组用 complex a(m,n) 就行了,引用元素用 a(i,j)

C,C++,Fortan行和列的概念是一样的,不一样的是处理方式(存储方式)Fortan列优先,C,C++行优先Fortran:填满一列的每一行,再换列填下一列的每一行 C:填满一行的每一列,在换行填下一行的每一列 Fortran:字符数组的话 charater name

1.基本使用:一维数组:datatype name (size) datatype: integer, real, complex, logical,或type自定义出来的类型.integer, parameter :: students = 5 integer :: student (students) 其他定义方法:integer a(10) !最简单的 integer, dimension (10) :: a

这个问题无法给出一个准确的答案.首先32位的软件理论上最多可以使用4G内存(当然实际上也就分配到3G多一点),64位的软件可以多些.另外,不同类型、不同精度的数组元素占用的内存也不一样.比如integer(kind=1)占1字节(8比特),integer(kind=4)占4字节(32比特).可分配内存除以数组元素大小,就是可分配的元素个数.所以,这跟是不是Fortran没关系,关键还看寻址方式.32位Fortran和32位MATLAB可分配的数组是一样的.最好的方法就是分配一下数组试试,溢出了你就知道能分配多少数组元素了.

这有很多种情况:1. 三维数组与二维数组一样大,只是排列不同.比如 30*30*10 赋值给 30*300.此时只要 reshape 既可.2. 三维数组比二维数组大,需要赋值一部分数据.比如 30*30*10 把第1维第6组赋值给二维数组.即 b(:,:) = a( : , : , 6 )3. 三维数组比二维数组小,需要复制多份数据.这就比较复杂了,可能需要循环.如果你弄不清楚自己的情况,请告诉我,你的三维数组多大?几乘几乘几?你想赋值给几乘几的二维数组?

使用ALLOCATABLE和ALLOCATE语句比如:INTEGER,ALLOCATABLE :: B(:)ALLOCATE(B(N))ALLOCATE(B(N))给数组B指定了N维的空间.这两个语句一定要配合使用DEALLOCATE(B)可以解除上述定义的空间.1.基本使用:一维数组:

看是什么版本? ms fortran 77定义的变量不能超过640k内存.现在的fortran系统均支持使用操作系统剩余的内存空间,若算上虚存,可以定义的结构会更大.

你试试下面的语句DO J=1,NDO I=1,MIF(A(I,J)>=B)THEN WRITE(*,*)I,J EXIT ENDIFENDDOENDDO

a(10),表示名称a的从1到10的数组,长度10;a(0:10),表示长度11,从0到10的数组;a(-1:10),表示长度12,从-1到10的数组.

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com