我需要将不同物体的面板信息存储到矩阵中。每个矩阵将包含一个主体的所有信息。所以N个体将导致N个矩阵。但是,主体总数将由用户输入决定。
我正在寻找一种单独创建矩阵的方法。 for循环索引----- i将是矩阵名称的一部分,因此矩阵大小可以根据特定的主体而变化。这个想法就像:
for i = 1:N
for j = 1: ROW
for k = 1: COL
Mat_i (j,k) = panel(j,k)
end
end
end
Fortran可行吗?有没有其他方法可以达到类似的效果?
答案 0 :(得分:1)
索引不能是变量名的一部分。但您可以使用用户定义的类型完成此操作:
type body_type
real, dimension (:,:), allocatable :: panel
end type body_type
type (body_type), dimension (:), allocatable :: bodies
然后,当用户告诉您N
时,分配一组实体:
allocate (bodies (N))
然后当知道数组的维度时,在i:
的循环中分配它们allocate (bodies (i) % panel (ROW_i,COL_i))
如果实体具有其他属性(例如质量,颜色等),则可以将它们作为类型中的附加项包含在内。以这种方式对相关数量进行分组是很好的编程实践。