gpt4 book ai didi

php - 处理复杂的数据结构值

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:28:00 26 4
gpt4 key购买 nike

我有两个坐标值。我正在计算每个坐标的欧几里得距离。我想在这里应用 K- 最近邻域算法。

  1. 对于每个坐标,得到与所有其他点的欧氏距离
  2. 选择最接近最大点的点(从所有点中,选择最接近最大坐标数的点)

        $result2 = mysqli_query($con,"SELECT pcount, ncount from test");
    $result1 = mysqli_query($con,"SELECT pcount, ncount from test");
    $i = 0;
    $k = 0;
    $min = 0;
    while ($row1 = @mysqli_fetch_array($result1))
    {
    $pcount = $row1['pcount'];
    $ncount = $row1['ncount'];
    echo "pcount is $pcount<br/>";
    echo "ncount is $ncount<br/></br>";
    $a[$i] = $pcount ;
    $b[$i] = $pcount ;
    $j = 0;
    $result2 = mysqli_query($con,"SELECT pcount, ncount from test");
    while ($row2 = @mysqli_fetch_array($result2))
    {
    //echo "j is $j <br/>";
    $a[$j] = $row2['pcount'];
    $b[$j] = $row2['ncount'];
    $diff = ($a[$i] - $a[$j])^2 + ($b[$i] - $b[$j])^2;
    if( $diff != 0)
    $diff = sqrt( $diff );
    $j= $j + 1;
    echo "$diff <br>";
    arr[$k] = $diff;
    $k = $k + 1;
    }
    //echo "i is $i <br/>";
    $i = $i + 1;
    }

这里,arr[$k] 包含所有点的距离差。我怎样才能得到最接近这里最大其他点的点。可能有超过 1 个这样的点。

最佳答案

我建议使用下面的方法。

0) 将数据库数据提取到二维数组中如下所示:

array(
array($x1,$y1),
array($x2,$y2),
...
)

1) 为每个点到所有其他点的(平方)距离之和构建数组存储。

2) 找到该数组中的最低值(最小值)。

3) 获取所有具有该值的点。

所以代码应该是这样的:

// $a_points = array( array($x1,$y1), array($x2,$y2), ... ); // array of point coordinates

$a_sum_dists = array();
foreach ($a_points as $i => $pt1) {
list($x1, $y1) = $pt1;
$sum = 0;
foreach ($a_points as $j => $pt2) {
if ($j == $i) continue;
list($x2, $y2) = $pt2;
$sum += pow($x2- $x1, 2) + pow($y2- $y1, 2);
}
$a_sum_dists[$i] = $sum;
}
$min_sum = min($a_sum_dists);
$a_result_points = array_intersect_key(
$a_points,
array_filter($a_sum_dists, function ($v) use ($min_sum) {
return $v == $min_sum;
})
);

Demo

关于php - 处理复杂的数据结构值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com