Hi folks
Afraid I have to ask an embarrassingly noobie question. I'm trying to get a
fitting program to work, and thought I would use the fitpoly1d function to do
it. However, I'm having trouble getting a very basic example to work, probably
because I'm not understanding the PDL data system.
I thought I would just try a simple quadratic fit for the example. The usual
perl methods for generating the data arrays don't seem to work, but having
perused the PDL site plus various examples I found on the web, I managed to get
something to at least run (see below).
The problem is that the fit comes out as linear, and I can't seem to access the
output values. I'm sure I'm just being stupid, but can someone point out the
obvious mistake?
Thanks
Ralph
#!/opt/local/bin/perl
#
use PDL;
use PDL::MATH;
use PDL::Fit::Polynomial;
my $xdata = sequence float, 16;
my $ydata = sequence float, 16;
my $i = 0;
while ($i < 16) {
$xdata[$i] = $i;
$ydata[$i] = $i * $i;
print "i ", $i, " x ", $xdata[$i], " y ", $ydata[$i], "\n";
$i++;
}
($yfit, $coeffs) = fitpoly1d $xdata, $ydata, 3;
print "Fit complete with coeffs ", $coeffs, "\n";
print "Fitted values ", $yfit, "\n";
$i = 0;
while ($i < 16) {
print "i ", $i, " yfit ", $yfit[$i], "\n";
$i++;
}
Output:
$ ./pdl.pl
i 0 x 0 y 0
i 1 x 1 y 1
i 2 x 2 y 4
i 3 x 3 y 9
i 4 x 4 y 16
i 5 x 5 y 25
i 6 x 6 y 36
i 7 x 7 y 49
i 8 x 8 y 64
i 9 x 9 y 81
i 10 x 10 y 100
i 11 x 11 y 121
i 12 x 12 y 144
i 13 x 13 y 169
i 14 x 14 y 196
i 15 x 15 y 225
Fit complete with coeffs [-2.6645353e-14 1 -1.4210855e-15]
Fitted values [-2.6645353e-14 1.0000001 2.0000001 3 4.0000002
5.0000001 6.0000001 7 8.0000004 9.0000004 10 11
12 13 14 15]
i 0 yfit
i 1 yfit
i 2 yfit
i 3 yfit
i 4 yfit
i 5 yfit
i 6 yfit
i 7 yfit
i 8 yfit
i 9 yfit
i 10 yfit
i 11 yfit
i 12 yfit
i 13 yfit
i 14 yfit
i 15 yfit
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl