php array 插值,PHP中的插值

我正在寻找

PHP中的一个函数,用于将一组不规则放置的数据(x,y,z)插入到网格化数据集中,以便在JPGraph的ContourPlot函数中使用它.我开发了一个基于简单

Inverse distance weighting的功能,但它太慢了.我需要使用其他方法,如“修改的Shepard方法”或任何其他可能的方法,更准确,使其更快,更顺畅.

这是我目前的代码:

for($i = 0, $ij = 0; $i < $gridX; $i ++) {

for($j = 0; $j < $gridY; $j ++, $ij ++) {

$x = $startP->x + ($deltaX * $i);

$y = $startP->y + ($deltaY * $j);

$g [$ij]->i = $i;

$g [$ij]->j = $j;

$g [$ij]->x = ( int ) $x;

$g [$ij]->y = ( int ) $y;

$g [$ij]->z = IDW_U ( $x, $y, $sampleData, $sampleSize, $p );

}

}

function IDW_U($x, $y, $data, $size, $p) {

$idw_sum = IDWeightSum ( $x, $y, $data, $size, $p );

$idw_u = 0.0;

for($k = 0; $k < $size; $k ++) {

if ($x == $data [$k]->x && $y == $data [$k]->y)

return $data [$k]->z;

$idw_u += IDWeight ( $x, $y, $data [$k], $p ) * $data [$k]->z / $idw_sum;

}

return $idw_u;

}

function IDWeightSum($x, $y, $data, $size, $p) {

$sum = 0.0;

for($k = 0; $k < $size; $k ++)

$sum += IDWeight ( $x, $y, $data [$k], $p );

return $sum;

}

function IDWeight($x, $y, $d, $p) {

if ($x == $d->x && $y == $d->y)

return 1.0;

$dx = $x - $d->x;

$dy = $y - $d->y;

$ret = 1.0 / pow ( sqrt ( pow ( $dx, 2 ) + pow ( $dy, 2 ) ), $p );

return $ret;

}

有人知道可用于此目的的功能或库吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值