Interpolation in PHP

Ich bin auf der Suche nach einer Funktion in PHP, die für die Interpolation einer Reihe von unregelmäßig Platzierten Daten (x,y,z) ein raster-DataSet für die Verwendung in ContourPlot der Funktion in JPGraph. Ich habe eine entwickelte Funktion basiert auf einfachen Inverse Distanz Gewichtung, aber es ist zu langsam. Muss ich eine andere Methode verwenden, wie "Modifizierte Shepard-Methode" oder anderen Methoden möglich, mit mehr Genauigkeit, um es schneller und reibungsloser.

Hier ist mein Derzeitiger code:

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;
}

Weiß jemand eine Funktion oder Bibliothek für diesen Zweck zur Verfügung?

  • Poste deinen code, der ist zu langsam. Möglicherweise gibt es einige signifikante Optimierungen möglich...
  • Hmm, ich denke gnuplot können ziemlich viel interpolieren und erzeugen die gleiche Qualität (oder besser) wie JPGraph. Vielleicht ist das eine option? Art eine steile Lernkurve, aber ich kann sicher sagen, ich weiß nicht, 2% von dem, was gnuplot nicht kann.
  • Dieses Kopfgeld kann Ihnen helfen, einige Antworten.
  • Dies nicht anzugehen, das eigentliche problem, sondern die Sie interessieren können, der in Facebook ist HipHop das beschleunigt PHP durch das kompilieren in systemeigenen code. developers.facebook.com/blog/post/358
InformationsquelleAutor Fred | 2010-07-21
Schreibe einen Kommentar