我正在使用二维矩阵D来存储粒子上的距离,因此根据定义为D(i,j) = D(j,i)
。
因此,我只将值存储在数组的上三角形中。 但是,当使用maxval(D)时,我正在运行intro麻烦,因为未初始化的数组有一半。
是否有MASK允许我只考虑上三角(i,j)元组?
! Pseudo-code above
max_distance = maxval(D, MASK = i in [1:size(D)] .and. j <= i)
当然,有这个版本,但我不想编写内置方式的代码:
function maxval_UpTriangle(D, d_size) result(max_val)
implicit none
real*8, dimension(1:d_size) :: D
integer :: i, j, d_size
real*8 :: max_val
do i= 1, d_size
do j= 1, i
if (D(j,i) >= max_val) D(j,i) = max_val
end do
end do
return
end function function maxval_UpTriangle
答案 0 :(得分:0)
Fortran没有“倾斜”部分,所以我认为你要求的是不可能的。编写自己的代码来计算矩阵的上三角形的最大值并不困难。