第二章代数插值1.ppt

第二章代数插值1

第2章 代数插值与数值微分 2.1 线性插值与二次插值 Image Pixel Matlab: gradient h = [-1, 2, -1]; dx2 = conv2(double(im),h,same); dy2 = conv2(double(im),h,same); 二次插值也称作抛物线插值,几何意义是用抛物线来代替曲线y=f(x), 例: 2.2 n次插值的拉格朗日和牛顿形式 Transforms I = double(imread(lena.bmp) ); [xi, yi] = meshgrid(linspace(1,256,128),linspace(1,256,128)); J=interp2(I,xi,yi,spline); x -1 -0.8 -0.6 -0.4 0 y=f(x) 0.03846 0.05882 0.1 0.2 0.5 x x0 x1 … xn y = f(x) y0 y1 … yn 例: 求f (x) = x2在[a,b]上的分段线性插值 函数p(x),并估计误差 在Matlab命令窗口中输入: x=[-5:1:5]; y=1./(1+x.^2); x0=[-5:0.1:5]; y0=lagrange(x,y,x0); y1=1./(1+x0.^2); plot(x0,y0,--r); hold on plot(x0,y1,-b) ; y2=interp1(x,y,x0); plot(x0,y2,*m) legend(拉格朗日插值曲线,原曲线,分段插值曲线) 一维线性插值解决Runge现象发生 实现分段线性插值不需要编制函数程序,它自身提供了内部的功能函数 interp1(一维) Intep2 (二维) interp3(三维) intern (n维) 对节点(x, y)插值,求插值点的函数值。x节点向量值,y对应的节点函数值。 method指定插值的算法,默认为线性算法。其值可为: ‘nearest’ 线性最近项插值 ‘linear’ 线性插值 ‘spline’ 立方样条插值 ‘cubic’ 立方插值 Source Landmarks Target Landmarks Displacement Vectors Interpolated Values [x, y] = meshgrid(linspace(1,256,256),linspace(1,256,256)); I = double(imread(lena.bmp)); J1 = interp2(x,y,in,x+64,y+64,nearest); J2 = interp2(x,y,in,.7*x-y+3,.9*x+.8*y+5); J3 =interp2(x,y,in,x-8*sin(x/16),.9*x+y+4*cos(y/32)); original image spline bicubic nearest - nearest neighbor interpolation linear - bilinear interpolation cubic - bicubic interpolation spline - spline interpolation k=imresize(I,0.5,bicubic); 2.484 9 12 2.564 9 2.397 9 y=lnx 13 11 x 1 … 0 0 ln(x) … … … … … 0 … 1 0 l1(x) 0 … 0 1 l0(x) xn … x1 x0 f(x0,x1,…,xn) f(xn-2,xn-1,xn) f(xn-1,xn) yn xn f(xn-3,xn-2,xn-1) f(xn-2,xn-1) yn-1 xn-1 … … … … … f(x1,x2,x3) f(x2,x3) y3 x3 f(x0,x1,x2) f(x1,x2) y2 x2 f(x0,x1) y1 x1 y0 x0 f(xi0,xi1, …,xin) … f(xi,xj,xk) f(xi,xj) yi=f(xi) xi 2.3 分段线性插值 1.00000 1.00000 0.00 0.10000 0.10000 -0.60 0.25376 0.13793 -0.50 0.84340 0.80000 -0.10 -0.22620 0.07547 -0.70 0.50000 0.50000 -0.20 0.05882 0.05882 -0.80 0.23535 0.30769 -0.30 1.57872 0.04706 -0.90

文档评论(0)

1亿VIP精品文档

相关文档