一维插值:
已知离散点上的数据集 ,即已知在点集X上对应的函数值Y,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。
MATLAB命令:yi=interp1(X, Y, xi, method)
该命令用指定的算法找出一个一元函数 ,然后以 给出 处的值。xi可以是一个标量,也可以是一个向量,是向量时,必须单调,method可以下列方法之一:
‘nearest’:最近邻点插值,直接完成计算;
‘spline’:三次样条函数插值;
‘linear’:线性插值(缺省方式),直接完成计算;
‘cubic’:三次函数插值;
对于[min{xi},max{xi}]外的值,MATLAB使用外推的方法计算数值。
%-- 09-4-1 下午8:38 --%
%已知数据
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=interp1(t,p,x,'cubic');%三次多项式插值
yi_v5cubic=interp1(t,p,x,'v5cubic');%matlab5中使用的三次多项式插值
%绘制图像对比
subplot(2,1,1);
plot(t,p,'ko');
hold on;
plot(x,yi_linear,'g','LineWidth',1.5);grid on;
plot(x,yi_spline,'y','LineWidth',1.5);
title('Linear VS Spline ')
subplot(2,1,2);
plot(t,p,'ko');
hold on
plot(x,yi_cubic,'g','LineWidth',1.5);grid on;
plot(x,yi_v5cubic,'y','LineWidth',1);
title('Cubic VS V5cubic ');
%创建新图形窗口
figure
yi_nearest=interp1(t,p,x,'nearest');%最邻近插值法
plot(t,p,'ko');
hold on
plot(x,yi_nearest,'g','LineWidth',1.5);grid on;
title('Nearest Method');
%以下是根据拟合估计
msg=' year Cubic Linear Nearest Spline';
for i=0:8
n=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((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);
end
P=round(pop);
disp(msg)
disp(P)
结果如图:
由此可见,各种插值的优劣,在速度上,Nearest最快,然后是Linear再到Cubic,最慢的是Splic.但是精度和曲线的平滑度恰好相反,Nearest甚至不连续~~
系统默认的是Linear
当然也可以用图形界面 更易理解
分享到:
相关推荐
MATLAB插值代码(一维插值interp1和二维插值interp2) 本资源为一维插值interp1和二维插值interp2的使用方法代码, 为完整代码, 可直接运行 % yi = interp1(x,y,xi,method); % 已知样本点坐标x,y,求xi处的函数值yi,...
在matlab中实现二维插值,多个离散点实现插值画出一个完整的面
学会用一维插值函数yi=interp1(xo,yo,x,’menthod’)求出函数在插值点处的函数值,和用二维函数plot()作图。用二维插值函数zi=interp2(x0,y0,z0,x,y,’method’)求其在网格节点数据的插值,和用三维函数surfc()作图.
MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method') 其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'...
主要介绍了matlab中二维插值函数interp2的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
interp函数的实现需要调用filter函数(MATLAB内置),为此,我特地实现了自己的filter函数,可以从我上传的资源里面找到
数据拟合中,用matlab进行二元函数插值算法。二元函数网格数据的插值
本代码主要利用MATLAB工具实现MATLAB——采用interp1对函数进行线性分段插值,简单明了,易于理解
一维数据插值。 导入此功能 节点模块 运行npm install interp1 将一个导入添加到npm包中, import interp1 from 'interp1'; 然后,您可以在代码中使用该函数。 CDN 将以下脚本标记[removed][removed]放在index.html...
当数据中存在缺失值时:比较科学的方法是做插值填补的方法,代码思路:从excel中导入数据,然后用matalab插值拟合,最终输入直接在excel表中修改。炒鸡简单实用 快捷,当然你也可以导入数据库文件,看个人需求!!...
本函数用于SINC插值,它是一种利用工程实现的结构,特别是适合FPGA使用的算法结构。
python中实现了matlab中二维数据内插值interp2的方法。大家可以看一下。
利用matlab软件进行函数插值的代码,主要利用了interp1
使用interp1函数进行线性插值。请多多指教。
yi = interp1(x
% 数据拟合% interp1 - 一元函数插值% spline - 样条插值% polyfit - 多项式插值或拟合 % curvefit - 曲线拟合% caspe - 各种边界条件的样条插值% casps - 样条拟合(没有)% interp2 - 二元函数插值% griddata - 不...
matlab经典算法之一 插值与拟合讲解 二者均是常用的二维差值方法,两者的区别是,interp2的插值数据必须是矩形域,即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成。而griddata函数的已知数据...
解决gsl2.4二维插值(gsl手册28章)无法初始化全局变量的问题: 将CY_billinear.h文件加进去就OK了。怀疑这个是在编译gsl库时没有将billinear.o文件链接好。在这里虽然看上去很累赘,但是管用。
更快的一维线性插值:'interp1qr' 按照公式yi = y1 +(y2-y1)/(x2-x1)*(xi-x1),使用'x'和'y'对'xi'点进行一维线性插值,得到'yi'。 变量: - 'x' 是列向量 [mx 1],单调递增。 -“ y”是矩阵[mxn],对应于...