MATLAB一维插值(interp1)四种方法的比较
一维插值是指被插值函数y=f(x)为一元函数。MATLAB提供interp1(x,y,xq,'Method')函数命令可以进行一维插值,其中一维插值有四种常用的方法,也就是'Method'可以选择邻近点插值Nearest,线性插值Linear,三次样条插值Spline和立方插值Pchip。下面对MATLAB这四种一维插值(interp1)的方法进行比较。
操作方法
- 01
第一,演示邻近点插值Nearest,线性插值Linear,三次样条插值Spline和立方插值Pchip,启动MATLAB,新建脚本(Ctrl+N),输入如下代码: close all; clear all; clc x=0:0.5:2*pi; y=sin(x); %-1---Nearest interpolation---% figure('Position',[50,50,500,400],'Name','Nearest') x1=0:0.1:2*pi;y1=interp1(x,y,x1,'Nearest'); plot(x,y,'.','color','r','MarkerSize',20);hold on; plot(x1,y1,'.','color','b','MarkerSize',10);hold off; xlabel('x','fontsize',20);ylabel('y','fontsize',20); %-2---Linear interpolation---% figure('Position',[100,100,500,400],'Name','Linear') x2=0:0.1:2*pi;y2=interp1(x,y,x1,'Linear'); plot(x,y,'.','color','r','MarkerSize',20);hold on; plot(x2,y2,'.','color','b','MarkerSize',10);hold off; xlabel('x','fontsize',20);ylabel('y','fontsize',20); %-3---Spline interpolation---% figure('Position',[150,150,500,400],'Name','Spline') x3=0:0.1:2*pi;y3=interp1(x,y,x1,'Spline'); plot(x,y,'.','color','r','MarkerSize',20);hold on; plot(x3,y3,'.','color','b','MarkerSize',10);hold off; xlabel('x','fontsize',20);ylabel('y','fontsize',20); %-4---Pchip interpolation---% figure('Position',[200,200,500,400],'Name','Pchip') x4=0:0.1:2*pi;y4=interp1(x,y,x1,'Pchip'); plot(x,y,'.','color','r','MarkerSize',20);hold on; plot(x4,y4,'.','color','b','MarkerSize',10);hold off; xlabel('x','fontsize',20);ylabel('y','fontsize',20); 该脚本借助一元函数y=sin(x)分别演示了邻近点插值Nearest,线性插值Linear,三次样条插值Spline和立方插值Pchip,(x,y)为原函数的点,(x1,y1),(x2,y2),(x3,y3)和(x4,y4)分别为Nearest,Linear,Spline和Pchip四种插值方法插值后函数的点。
- 02
第二,保存和运行上述脚本,得到Figure 1 邻近点插值(Nearest)的图像。红点表示y=sin(x)一元函数原有的点,蓝点表示邻近点插值(Nearest)后的点。
- 03
第三,得到Figure 2 线性插值(Linear)的图像。红点表示y=sin(x)一元函数原有的点,蓝点表示线性插值(Linear)后的点。
- 04
第四,得到Figure 3 三次样条插值(Spline)的图像。红点表示y=sin(x)一元函数原有的点,蓝点表示三次样条插值(Spline)后的点。
- 05
第五,得到Figure 4 立方插值(Cubic)的图像。红点表示y=sin(x)一元函数原有的点,蓝点表示立方插值(Cubic)后的点。