python之数值计算库——Scipy (三)补充

分类: python |
刚学完样条插值,简直痛心,scipy的interpolate库提供了好多的插值函数,我把链接放在这(实在不喜欢看英文。。。):各种插值函数。。。
讲一个简单的线性插值和B_Spline插值吧,所谓线性插值,两点成一条直线呗。至于B_Spline样条插值,简单的说点,先是有分段插值,因为并不是次数越高插值误差越小,但是分段的毛病是拟合的曲线好不光滑。。所以样条插值其实是分段插值,不过是光滑的分段插值。至于B_Spline,我说贝塞尔就不陌生了吧,样条插值还是很好理解的,给个链接吧(度娘的。。)样条插值
好了,上代码了:
#linear interpolation and B_spline interpolation
import numpy as np
import pylab as pl
from scipy import interpolate
x=np.linspace(0,2*np.pi,10)
y=np.sin(x)
x_new=np.linspace(0,2*np.pi,100)
y_linear=interpolate.interp1d(x,y)#这里的y_linear已经是插值后的结果了
tck=interpolate.splrep(x,y) #这个必须有,splrep()的结果作为splev()的第二个参数
y_spline=interpolate.splev(x_new,tck)
pl.plot(x,y,'r*',markersize=20,label='original data')
pl.plot(x_new,y_linear(x_new),'g',linewidth=3,label='linear interpolation')
pl.plot(x_new,y_spline,'k',linewidth=3,label='B_spline interpolation')
pl.legend()
pl.show()
http://s12/mw690/004igrvszy75PoAlg3peb&690(三)补充" TITLE="python之数值计算库——Scipy(三)补充" />
我觉得有个博客写这个插值的很不错:python.scipy.interpolate
写程序改个线条宽度都不知道参数名markersize和linewidth,也是醉了。。。
睡觉了!
#linear interpolation and B_spline interpolation
import numpy as np
import pylab as pl
from scipy import interpolate
x=np.linspace(0,2*np.pi,10)
y=np.sin(x)
x_new=np.linspace(0,2*np.pi,100)
y_linear=interpolate.interp1d(x,y)#这里的y_linear已经是插值后的结果了
tck=interpolate.splrep(x,y) #这个必须有,splrep()的结果作为splev()的第二个参数
y_spline=interpolate.splev(x_new,tck)
pl.plot(x,y,'r*',markersize=20,label='original data')
pl.plot(x_new,y_linear(x_new),'g',linewidth=3,label='linear interpolation')
pl.plot(x_new,y_spline,'k',linewidth=3,label='B_spline interpolation')
pl.legend()
pl.show()
http://s12/mw690/004igrvszy75PoAlg3peb&690(三)补充" TITLE="python之数值计算库——Scipy
我觉得有个博客写这个插值的很不错:python.scipy.interpolate
写程序改个线条宽度都不知道参数名markersize和linewidth,也是醉了。。。
睡觉了!
前一篇:找最大矩形面积的巧妙算法
后一篇:漫画算法的python实现