cubic与spline插值点处的区别
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插值点处的区别的更多相关文章
- Opencv 三次样条曲线(Cubic Spline)插值
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/47707679 1.样条曲线简介 样条曲 ...
- Activity和Servlet的相似之处和区别
相似之处:1.Activity.Servlet的职责都是向用户呈现界面.2.开发者开发Activity.Servlet都继承系统的基类.3.Activity.Servlet开发出来之后都需要进行配置. ...
- CountDownLatch、CyclicBarrier、Semaphore共同之处与区别以及各自使用场景
区别 CountDownLatch 使一个线程A或是组线程A等待其它线程执行完毕后,一个线程A或是组线程A才继续执行.CyclicBarrier:一组线程使用await()指定barrier,所有线程 ...
- RequireJs 与 SeaJs的相同之处与区别
相同之处: RequireJS 和 Sea.js 都是模块加载器,倡导模块化开发理念,核心价值是让 JavaScript 的模块化开发变得简单自然. 不同之处: 定位有差异.RequireJS 想成为 ...
- MATLAB二维插值和三维插值
插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...
- MATLAB实现插值和拟合
插值问题在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值.实例:海底探测问题某公司用声纳对海底进行测试,在5×5海里的坐标点上测得海底深度的值,希望通过这些 ...
- MATLAB插值
转自原文 MATLAB插值 插值问题 在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值. 实例:海底探测问题 某公司用声纳对海底进行测试,在5×5海里的坐标 ...
- Matlab学习第二天 利用插值
插入值一切手段: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDQ5MjI1Nw==/font/5a6L5L2T/fontsize/400/fi ...
- 分段三次Hermite插值及其与三次样条的比较
分段三次 Hermite 插值多项式 (PCHIP) 语法 p = pchip(x,y,xq) pp = pchip(x,y) 说明 p = pchip(x,y,xq) 返回与 xq 中的查询点对 ...
随机推荐
- Rabbit测试及其方案
转载:https://www.2cto.com/kf/201609/548190.html 个消息没有回应,则MQ不会再往消费者A中发消息,直到收到消息确认后才会再次发送. Ack:消息确认. :启动 ...
- bzoj4697: 猪
Description 红学姐和黄学长是好朋友.红学姐有一只宠物,叫魔法猪.黄学长也有一只宠物,叫小奇.有 n 个猪圈排成一排 ,魔法猪藏在某个猪圈中.为了找到魔法猪,小奇会向你询问一些猪圈中猪的个数 ...
- 本地ip 和 网络ip 解释
本地IP其实就是私有IP地址10.0.0.0--10.255.255.255172.16.0.0----172.31.255.255192.168.0.0---192.168.255.255 这些都是 ...
- java实验——将100-300之间的素数输出
public class 实验1 { //将100-300之间的素数输出 /** * @param args */ public static void main(String[] args) { / ...
- 软件-分布式:Kylin (apache开源分布式分析引擎软件)
ylbtech-软件-分布式:Kylin (apache开源分布式分析引擎软件) Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以 ...
- Linux 简单命令查询CPU、内存、网卡等信息
[转自]Linux查询CPU.内存.网卡等信息 看CPU信息(型号)# cat /proc/cpuinfo | grep name | cut -f2 -d: |uniq -c 1 Int ...
- IO模式调查利器blkiomon介绍
本文链接地址: IO模式调查利器blkiomon介绍 blkiomon 是blktrace工具包带的一个方便用户了解IO情况的工具, 由于blktrace太专业,需要了解的IO协议栈的东西太多,blk ...
- Python Twisted系列教程1:Twisted理论基础
作者:dave@http://krondo.com/in-which-we-begin-at-the-beginning/ 译者:杨晓伟(采用意译) 前言: 最近有人在Twisted邮件列表中提出诸 ...
- 20180129周一之学习PYTHON笔记【PYTHON2写个自动点击学习功能】
pyautogui.click(pyautogui.center(pyautogui.locateOnScreen('sy.png'))) #点击该截图一次 --------------------- ...
- django-后台sms管理系统的css框架
地址:https://adminlte.io/ 下载代码.使用index.html的页面及相关文件 通过下在线检查adminlte.io的后台的各种模块元素,仿写.