资源描述:
《matlab线性插值》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Matlab线性插值已知离散点上的数据集,即已知在点集X上对应的函数值Y,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。MATLAB命令:yi=interp1(X,Y,xi,method)该命令用指定的算法找出一个一元函数,然后以给出xi处的值。xi可以是一个标量,也可以是一个向量,是向量时,必须单调,method可以下列方法之一:'nearest':最近邻点插值,直接完成计算;'spline':三次样条函数插值;'linear':线性插值(缺省方式),直接完成计算;'cubic':
2、三次函数插值;对于[min{xi},max{xi}]外的值,MATLAB使用外推的方法计算数值。下面是一个例子:t=1900:10:1990;p=[75.995,91.972,105.711,123.203,131.669,150.697,179.323,203.212,226.505,249.633];x=1900:0.01:1990;%使用不同的方法进行一维插值yi_linear=interp1(t,p,x);%线性插值yi_spline=interp1(t,p,x,'spline');%三次样条插值yi_cubic=inte
3、rp1(t,p,x,'cubic');%三次多项式插值yi_v5cubic=interp1(t,p,x,'v5cubic');%matlab5中使用的三次多项式插值%绘制图像对比%subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果第一个数字是2就是表示2行图。p是指你现在要把曲线画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置。subplot(2,1,1);plot(t,p,'ko');holdon;plot(x
4、,yi_linear,'g','LineWidth',1.5);gridon;plot(x,yi_spline,'y','LineWidth',1.5);title('LinearVSSpline')subplot(2,1,2);plot(t,p,'ko');holdonplot(x,yi_cubic,'g','LineWidth',1.5);gridon;plot(x,yi_v5cubic,'y','LineWidth',1);title('CubicVSV5cubic');%创建新图形窗口figureyi_nearest=in
5、terp1(t,p,x,'nearest');%最邻近插值法plot(t,p,'ko');holdonplot(x,yi_nearest,'g','LineWidth',1.5);gridon;title('NearestMethod');%以下是根据拟合估计msg='yearCubicLinearNearestSpline';fori=0:8n=10*i;year=1905+n;pop(i+1,1)=year;pop(i+1,2)=yi_cubic((year-1900)/0.01+1);pop(i+1,3)=yi_linear
6、((year-1900)/0.01+1);pop(i+1,4)=yi_nearest((year-1900)/0.01+1);pop(i+1,5)=yi_spline((year-1900)/0.01+1);endP=round(pop);disp(msg)disp(P)由此可见,各种插值的优劣,在速度上,Nearest最快,然后是Linear再到Cubic,最慢的是Splic.但是精度和曲线的平滑度恰好相反,Nearest甚至不连续~~系统默认的是Linear