曼哈顿距离Fortran

时间:2014-03-13 17:38:14

标签: fortran fortran90 fortran77 fortran95

我想根据以下公式计算Fortran中2个阵列之间的曼哈顿距离:

d = Sum(|P(i)-R(i)|)

所以我在Fortran中创建了一个代码:

function DistM(v, u, dim)
    integer dim
    real(8) v(dim), u(dim), DistM
    DistM=sum(abs(v-u))
end function DistM

我用这个来调用这个函数:

Coeff=DistM(tempvector1,tempvector2, dim)

但这似乎不起作用(我没有得到任何回报)。我也试过取2的幂,然后做它的sqrt,但它然后卡在sqrt(如果我按步骤运行)。 我尝试了另一个功能,并且有一个功能(见下文),但这个功能不起作用:(:

function Roznica(v, u, dim)
        integer dim
        real(8) v(dim), u(dim), Rozn
        Rozn=sum((v-u)**2)/dim
end function Roznica

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

我会像这样写一个曼哈顿距离函数(如果函数有一个显式接口,假设形状数组就不再像你那样使用自动数组了):

pure function L1(v)
  real, intent(in) :: v(:)  ! <- shape assumed from actual argument
  real :: L1
  L1 = sum(abs(v))
end function

然后,如果你有两个向量,你只需将函数称为foo = L1(p - q)