Frage zu Math::Interpolator

25/02/2013 - 16:08 von Astrid | Report spam
Hallo zusammen,

verwende Math::Interpolator.
Als Auszug:

use Math::Interpolator::Robust;
use Math::Interpolator::Knot;
@knots = pairwise { Math::Interpolator::Knot->new($a, $b) } @x,
@slice;
$ipl = Math::Interpolator::Robust->new(@knots);
$output[$i-1][$j] = $ipl->y($tmp)."; ";

Funktioniert soweit auch gut wenn meine x-Werte z.B.
1.5,3.5,5.5...19.5 lauten und
ich bei 5,10,15, 20 die interpoliereten y-Werte haben moechte.
Wenn ich allerdings bei 2,4,6,...,18 die y-Werte haben moechte dann
bekomme ich eine
Fehlermeldung
data does not extend to x
(obwohl ja Daten bis x.5 vorliegen).

Kann man das auch irgendwie hinbekommen?

Gruss, Astrid
 

Lesen sie die antworten

#1 Peter J. Holzer
26/02/2013 - 20:54 | Warnen spam
On 2013-02-25 15:08, Astrid wrote:
verwende Math::Interpolator.
Als Auszug:

use Math::Interpolator::Robust;
use Math::Interpolator::Knot;
@knots = pairwise { Math::Interpolator::Knot->new($a, $b) } @x,
@slice;
$ipl = Math::Interpolator::Robust->new(@knots);
$output[$i-1][$j] = $ipl->y($tmp)."; ";



Besser als ein Auszug wàre ein vollstàndiges Script, an dem man den
Fehler nachvollziehen kann. Ich hatte noch mein Beispielscript vom
Oktober herumliegen (da hast Du auch schon eine Frage zu
Math::Interpolator gestellt, die ich beantwortet habe) und habe das
angepasst. Die Mühe, Deinen Auszug lauffàhig zu machen, hàtte ich mir
nicht gemacht.

Funktioniert soweit auch gut wenn meine x-Werte z.B.
1.5,3.5,5.5...19.5 lauten und
ich bei 5,10,15, 20 die interpoliereten y-Werte haben moechte.
Wenn ich allerdings bei 2,4,6,...,18 die y-Werte haben moechte dann
bekomme ich eine
Fehlermeldung
data does not extend to x
(obwohl ja Daten bis x.5 vorliegen).



Die gleiche Meldung solltest Du auch für x=2 bekommen. Ich
bekomme zumindest nur Werte zwischen 3.5 und 17.5. Dieser Interpolator
dürfte einer von denen sein, die auf jeder Seite mindestens zwei
Stützpunkte brauchen.[1]

Möglicherweise soll die etwas vage Formulierung

| Only interior points are handled. Interpolation will be refused at
| the edges of the curve.

im Manual darauf hinweisen.

Kann man das auch irgendwie hinbekommen?



Auf jeder Seite einen zusàtzlichen Stützpunkt dazuschàtzen.

hp

[1] Die Manpage von Math::Interpolate widerspricht dem allerdings.

_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | Sysadmin WSR | Man feilt solange an seinen Text um, bis
| | | | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel

Ähnliche fragen