[SciPy-User] Problem with scipy.interpolate.RectBivariateSpline
Peter Baek
mr.peter.baek at gmail.com
Tue Mar 22 06:07:07 EDT 2011
Hi,
I find it strange that scipy.interpolate.RectBivariateSpline cannot
evaluate a random vector. When i evaluate an ordered vector using e.g.
linspace it works fine, but when i try a random vector it crashes.
Please help me find a way to evaluate an unordered vector.
Thanks,
Peter.
Here is a test bench code that demonstrates the problem:
----------------------------------------------BEGIN
CODE------------------------------------------------------------------------------
from pylab import *
from scipy import interpolate
"""
first create a 2D space to do interpolation within
"""
Nx=11
Ny=6
f=zeros((Ny,Nx))
x=linspace(0,Nx-1,Nx)
y=linspace(0,Ny-1,Ny)
for i in arange(Nx):
for j in arange(Ny):
f[j,i]=x[i]+y[j]**2
matx=kron(ones((Ny,1)),x)
maty=kron(ones((1,Nx)),y.reshape(-1,1))
print f
print matx
print maty
figure(1)
c=contour(matx,maty,f)
clabel(c)
title('surface which i want to interpolate in')
"""
Now create an interpolation...
"""
finter_x=interpolate.RectBivariateSpline(y,x,f,kx=3,ky=3)
"""
and evaluate using a linspace vector...
"""
xi1=[5]
yi1=linspace(0,5,100)
print yi1
figure(2)
plot(yi1,finter_x(yi1,xi1))
title('slice at x=5 ordered vector')
"""
and evaluate using a random vector...
"""
xi2=[5]
yi2=rand(100)*5
#yi2=linspace(0,5,100)
print yi2
figure(3)
plot(yi1,finter_x(yi2,xi2))
title('slice at x=5 random vector')
show()
--------------------------- END CODE -----------------------------
More information about the SciPy-User
mailing list