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 中的查询点对 ...
随机推荐
- bzoj3157 3516 国王奇遇记
Description Input 共一行包括两个正整数N和M. Output 共一行为所求表达式的值对10^9+7取模的值. 特判m=1 m≠1时: 设S[u]=sigma(i^u*m^i) m*S ...
- php 表单提交方法
1.收集 HTML 表单提交的数据 ,PHP $_REQUEST 用于收集 HTML 表单提交的数据. <!DOCTYPE html><html><body> &l ...
- selenium APi
1.查看浏览器的名字方法:name实例:drvier.name 2.删除浏览器所以的cookies方法:delete_all_cookies()实例:driver.delete_all_cookies ...
- Maven报错找不到jre
常规配置maven环境变量,报错: The JAVA_HOME environment variable is not defined correctly. This environment vari ...
- (转)手机的AP和BP是什么?
AP:Application Processor,即应用芯片 BP:Baseband Processor,即基带芯片 搞什么嘛,双核就双核呗,怎么又搞出个AP和BP啊 原来,FCC(美国联邦通信委员会 ...
- iOS whose view is not in the window hierarchy!
解决方法: viewController只Load完毕,没有Appear,此时应该将语句转移到ViewDidAppear方法中
- django中视图处理请求方式(FBV、CBV)
FBV FBV(function base views) 就是在视图里使用函数处理请求. 在之前django的学习中,我们一直使用的是这种方式,所以不再赘述. CBV CBV(class base v ...
- web基础 (一) http协议
一.什么是web服务 浏览器与网页服务端发起的请求与回应(返回的是一堆字符串,浏览器去渲染生成页面!)都是 标准的CS模式 ---- bs模式:客户端用浏览器即可,服务端需要自己去写 http协议是建 ...
- python学习中的第一个例子
搭建python 先学习下当小白鼠 1 看下自己的python版本 python -v 2 然后,用pip安装开发Web App需要的第三方库: 异步框架aiohttp: pip3 install a ...
- PY3 周总结 第一周
1. Python的三大特点是什么? 答:解释型.动态类型(运行期间才做数据类型检查).强类型定义(一个变量只能存储一种类型的数据).[See More] 2. 应该使用Python2 还是 Pyth ...