[SciPy-User] scipy.interpolate.rbf sensitive to input noise ?
Fri Feb 19 10:41:06 CST 2010
On Fri, Feb 19, 2010 at 11:26 AM, denis <firstname.lastname@example.org> wrote:
> On Feb 18, 4:48 pm, Robert Kern <robert.k...@gmail.com> wrote:
>> On Thu, Feb 18, 2010 at 09:19, denis <denis-bz...@t-online.de> wrote:
>> > Running rbf on 100 1d random.uniform input points
>> > (after changing the linalg.solve in rbf.py to lstsq)
>> Why would you do this? This does not magically turn Rbf interpolation
>> into a smoothing approximation. Use the "smooth" keyword to specify a
>> smoothing parameter.
> i'm interpolating y = np.sin(x) + np.random.normal( 0, .1 ), not
> random noise.
> The idea was to look at gaussian vs thin-plate;
> true, that 1d snippet doesn't say much,
> but my 2d plots were so noisy that I went down to 1d.
> Use "smooth" ? rbf.py just does
> self.A = self._function(r) - eye(self.N)*self.smooth
> and you don't know A .
rbf is a global interpolator, and as Robert said for some cases you
get very unstable results.
with a large number of points self._function(r) is not very well
behaved and you need the penalization to make it smoother. In a
variation of your example, I printed out the eigenvalues for self.A
and they don't look nice without penalization.
There are still some strange things that I don't understand with the
behavior rbf, but when I looked at it in the past, I got better
results by using only local information, i.e. fit rbf only to a
neighborhood of the points, although I think thinplate did pretty well
also with a larger number of points.
> Bytheway (googling), http://www.farfieldtechnology.com/products/toolbox
> have an O(N lnN) FastRBF TM in matlab, $
> -- denis
> SciPy-User mailing list
More information about the SciPy-User