FORTRAN的maxval:使用MASK仅计算上三角形

时间:2014-05-06 13:59:30

标签: fortran

我正在使用二维矩阵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

1 个答案:

答案 0 :(得分:0)

Fortran没有“倾斜”部分,所以我认为你要求的是不可能的。编写自己的代码来计算矩阵的上三角形的最大值并不困难。