我想根据以下公式计算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
有人有想法吗?
答案 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)
。