cubic与spline都是Matlab的三次样条插值法,但是它们在插值点处仍然有着很微妙的区别,这个区别说明不了两种方法的好坏,只能根据实际情况进行合理筛选。以一维插值为例:

clc
clear %% load data
load Fig1m
x1=Fig1m(:,1);y1=Fig1m(:,2);
m=x1;n=y1;
m(57)=0.0226;m(83)=0.0326;
m(95)=0.0374;m(97)=0.0378;m(99)=0.0382;
mx=0.0:0.0001:0.065;
ny=interp1(m,n,mx,'cubic'); % or ny=interp1(m,n,mx,'pchip');
m1=log(1+mx);n1=ny.*(1+mx); %% Cubic spline
figure(1)
H=plot(m1,n1,'-',mx,ny,'-','LineWidth',1.5,'MarkerSize',5);
text(0.005,2.7,'(a) cubic or pchip','interpreter','latex','fontsize',18);
xlabel('Strain','Interpreter','LaTex','fontsize',18);
ylabel('Stress (GPa) ','interpreter','latex','fontsize',18); h=legend(H,'in1','in2','Location','South');
po=get(h,'Position' );
set(h,'Position',[po(1)+0.1, po(2)+0.3, po(3), po(4)]);
h1 = findobj(get(h,'Children'),'String','in1');
set(h1,'String','$\sigma_{_E}-\epsilon_{_E}$','Interpreter','LaTex','fontsize',15);
h1 = findobj(get(h,'Children'),'String','in2');
set(h1,'String','$\sigma_{_E}-\epsilon_{_E}$','Interpreter','LaTex','fontsize',15);
h2 = findobj(get(h,'Children'),'String','in1');
set(h2,'String','$\sigma-\epsilon$','Interpreter','LaTex','fontsize',15); axis([0 0.08 0 3]);
set(gca,'xtick',0:0.02:0.08,'ytick',0:0.5:3,'fontsize',14);
legend('boxoff')
Xlim =get(gca,'xlim');
Ylim=get(gca,'ylim');
line([Xlim(1) Xlim(2)],[Ylim(2) Ylim(2)],'color','k');
line([Xlim(2) Xlim(2)],[Ylim(1) Ylim(2)],'color','k');

   插值效果如下:

显然,从合理性上看,图(a)是我们所需要的,而图(b)在破浪处浮动过大,更不应该在端点处上挑。这就是说cubic或pchip的插值效果比spline在所给数据的情况下,要更合理一些(b)图须将上述代码做如下局部改变:

ny=interp1(m,n,mx,'spline');  % or ny=spline(m,n,mx);
text(0.005,2.7,'(b) spline','interpreter','latex','fontsize',18);

如果,所考虑的数据点是正弦函数的部分数据点,那么样条函数插值后的比较程序可写为:

x=0:10;
y=sin(x);
xi=0:0.25:10; %将插值方法定义为单元数组
strmod={'nearest', 'linear', 'spline', 'cubic'};
%将图标定义为单元数组
str1b={'(a) method=nearest', '(b) method=linear',...
'(c) method=spline', '(d) method=cubic'};
for i=1:4
yi=interp1(x,y,xi,strmod{i});
subplot(2,2,i)
plot(x,y, 'ro' ,xi,yi, 'b'),xlabel(str1b(i))
end

  得到的结果如下:

从这幅图中可以看到,spline插值明显比cubic要合理。而其它两种非三次样条插值(临近点插值‘nearest’和线性插值 ‘linear’)的效果均较差。

注:本篇是受新浪2011晓梦蝴蝶的博客的启发写的更为细致的博文,原帖链接:关于MATLAB 插值(Interpolation)

cubic与spline插值点处的区别的更多相关文章

  1. Opencv 三次样条曲线(Cubic Spline)插值

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/47707679 1.样条曲线简介 样条曲 ...

  2. Activity和Servlet的相似之处和区别

    相似之处:1.Activity.Servlet的职责都是向用户呈现界面.2.开发者开发Activity.Servlet都继承系统的基类.3.Activity.Servlet开发出来之后都需要进行配置. ...

  3. CountDownLatch、CyclicBarrier、Semaphore共同之处与区别以及各自使用场景

    区别 CountDownLatch 使一个线程A或是组线程A等待其它线程执行完毕后,一个线程A或是组线程A才继续执行.CyclicBarrier:一组线程使用await()指定barrier,所有线程 ...

  4. RequireJs 与 SeaJs的相同之处与区别

    相同之处: RequireJS 和 Sea.js 都是模块加载器,倡导模块化开发理念,核心价值是让 JavaScript 的模块化开发变得简单自然. 不同之处: 定位有差异.RequireJS 想成为 ...

  5. MATLAB二维插值和三维插值

    插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...

  6. MATLAB实现插值和拟合

    插值问题在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值.实例:海底探测问题某公司用声纳对海底进行测试,在5×5海里的坐标点上测得海底深度的值,希望通过这些 ...

  7. MATLAB插值

    转自原文 MATLAB插值 插值问题 在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值. 实例:海底探测问题 某公司用声纳对海底进行测试,在5×5海里的坐标 ...

  8. Matlab学习第二天 利用插值

    插入值一切手段: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDQ5MjI1Nw==/font/5a6L5L2T/fontsize/400/fi ...

  9. 分段三次Hermite插值及其与三次样条的比较

    分段三次 Hermite 插值多项式 (PCHIP) 语法 p = pchip(x,y,xq) pp = pchip(x,y)   说明 p = pchip(x,y,xq) 返回与 xq 中的查询点对 ...

随机推荐

  1. bzoj 2516: 电梯

    Description Input Output 状压dp,状态表示为表示当前在第x层,电梯内有哪些人,哪些人还没到终点 #include<cstdio> #include<cstr ...

  2. Parity 钱包启动配置

    Parity. Ethereum Client. By Wood/Paronyan/Kotewicz/Drwięga/Volf et al. Copyright 2015, 2016, 2017, 2 ...

  3. [转]链接中 href='#' 和 href='###' 的区别以及优缺点

    本文来自:http://c.jinhusns.com/bar/t-829 链接中 href='#' 和 href='###' 的区别以及优缺点 上一篇 下一篇近乎_问阳 发表于:2013-09-09 ...

  4. appium 3-31626 toast识别

    1.toast弹窗,普通方式不能获取 例如使用getPageSource是无法找到toast的信息,uiautomatorViewer加载页面时间较长,也很难采集到toast信息 2.通过curl命令 ...

  5. 1035 Password (20 分)

    1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...

  6. ubuntu 查看系统是32位还是64位

    查看cpu信息 cat /proc/cpiinfo 查看ubuntu版本: cat /etc/issue 查看系统是32位还是64位 方法1: #查看long的位数,返回32或64 getconf L ...

  7. Dubbo与Zookeeper、Spring整合使用

    Dubbo与Zookeeper.Spring整合使用 Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spri ...

  8. Maven web项目启动出错

    问题描述: 在第一次建立maven项目后,启动测试,结果jsp页面报告404错误 问题解决: 在pom.xml中引入servlet-api 和 jsp-api,maven不会自动的添加,因此,要在首次 ...

  9. Effect

    /////////////////////////////////shader source/////////////////////////////////Texture2D colorMap : ...

  10. python气象分析

    数据分析实例 -- 气象数据 一.实验介绍 本实验将对意大利北部沿海地区的气象数据进行分析与可视化.我们在实验过程中先会运用 Python 中matplotlib库的对数据进行图表化处理,然后调用 s ...