Phpml\Math\Distance\Minkowski::distance PHP Method

distance() public method

public distance ( array $a, array $b ) : float
$a array
$b array
return float
    public function distance(array $a, array $b) : float
    {
        if (count($a) !== count($b)) {
            throw InvalidArgumentException::arraySizeNotMatch();
        }
        $distance = 0;
        $count = count($a);
        for ($i = 0; $i < $count; ++$i) {
            $distance += pow(abs($a[$i] - $b[$i]), $this->lambda);
        }
        return pow($distance, 1 / $this->lambda);
    }

Usage Example

Example #1
0
 public function testCalculateDistanceForThreeDimensionsWithDifferentLambda()
 {
     $distanceMetric = new Minkowski($lambda = 5);
     $a = [6, 10, 3];
     $b = [2, 5, 5];
     $expectedDistance = 5.3;
     $actualDistance = $distanceMetric->distance($a, $b);
     $this->assertEquals($expectedDistance, $actualDistance, '', $delta = 0.001);
 }