hermite、三次样条插值算法 调用matlab函数、代码实现
一、Hermite插值
Hermite插值要求有些节点或全部节点的函数值和导数值重合,使得在节点出具有一定的光滑度
满足插值条件的三次Hermite插值多项H3(x)存在且唯一,其基函数计算公式如下:
,
带入H3(x)公式得
在Matlab中使用Hermite插值直接调用公式pchip()函数,返回在插值函数在新的x节点的函数值y。
二、三次样条插值
三次样条插值曲线在连接点处是光滑连续的,一阶和二阶导数是连续的,边界函数的二阶导数也是连续的,单个点不会影响整个插值曲线。
算法如下:
1.计算节点步长
2.将路径条件和端点条件带入如下矩阵中计算:
3.解出矩阵方程得到二次微分值mi
4.计算样条插值系数:
5.将系数带入得到在每个子区间 中的样条函数公式:
三种图像绘制对比的代码如下:
x = -pi:pi; %以1为间隔设置插值节点
y = sin(x); %计算节点处sin函数值
new_x = -pi:0.1:pi; %以0.1为间隔设置新节点
p_her = pchip(x,y,new_x); %进行Hermite插值,计算新节点在插值函数下的函数值
p_spline = spline(x,y,new_x);%进行样条插值
%绘制新旧曲线,对比。
p1 = plot(x,y,'or-');
hold on;
p2 = plot(new_x,p_her,'k-');
hold on;
p3 = plot(new_x,p_spline,'g-');
legend([p1,p2,p3],{'nothing','hermite','spline'},'Location','best');
图像如下:
可以看到 三次样条插值的结果更贴合我们事先使用的sin函数,比hermite插值的结果更好。
插值样例:根据往年人口数量对人口增长进行预测,给出2009-2018年的人口数量,对2019-2021的人口进行预测。代码如下:
population = [133126,133770,134413,135069,135738,136427,137122,137866,138639,139538];
year = 2009:2018;
p1 = pchip(year,population,2019:2021);%三次hermite插值
p2 = spline(year,population,2019:2021);%三次样条插值
plot(year,population,'o',2019:2021,p1,'r*-',2019:2021,p2,'bx-');
legend('样本点','hermite','spline','Location','best');
结果如图:
hermite、三次样条插值算法 调用matlab函数、代码实现相关推荐
- opencv通过dll调用matlab函数,图片作为参数
[blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数 前文介绍了如何"csharp通过dll调用opencv函数,图片作为参数 ...
- (VS)c++调用matlab函数
1.matlab封装matlab函数 (1)方法一 1.输入 mex -setup 回车,然后点击选择 mex -setup C++: 2.输入 mbuild -setup 回车,然后点击选择 mex ...
- 超详细基于Qt平台实现C/C++调用Matlab函数全流程
超详细基于Qt平台实现C/C++调用Matlab函数全流程 1. 基本调用方式介绍 2. 环境配置 3. 将Matlab程序写成函数形式 4. Matlab配置C编译器,将.m文件转换成动态链接库 4 ...
- C++ MATLAB 混合编程——VS项目调用MATLAB函数
引言 MATLAB无疑是一款强大的矩阵运算与数据分析软件,内部集成了众多函数.如果在C++编程时可以调用相关的函数将对我们的数据分析研究带来极大的方便.这里就总结一下如何在VS工程中调用MATLAB函 ...
- Simulink代码生成: 调用Matlab函数
本文研究Simulink模型中调用Matlab函数的方法. 文章目录 1 Matlab Function模块 2 建模与代码生成 3 Matlab Function中的数据管理 3.1 关联Signa ...
- C/C++ VS中调用matlab函数的方法
C/C++ VS中调用matlab函数的方法 [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/73743654 Matla ...
- c 调用matlab文件路径,C/C++下调用matlab函数操作说明
1.matlab的安装 连接:http://pan.baidu.com/s/1qXuF7aO 安装32位版本的matlab(在目录下bin文件夹中有两个文件夹,选择win32文件夹下的setup进行安 ...
- 一文读懂如何用python调用matlab函数(windows环境)
第一步配置环境: 要安装引擎 API,请在操作系统提示符下执行以下命令,其中 matlabroot 是 MATLAB 文件夹的路径.您可能需要管理员权限才能执行这些命令.或者,使用在非默认位置安装用于 ...
- c# 调matlab传字符串_c#调用matlab函数(混合编程)
第 2 部分 实战练习(自己做的) 2.1 c# 调用 matlab 函数 matlab 版本 2009b , c# 版本 vs2008. 2.1.1 matlab 函数编译成 dll 文件 ( 1 ...
最新文章
- c/c++ 拷贝控制 构造函数的问题
- 【译】使用这些 CSS 属性选择器来提高前端开发效率!
- LESSON 9.4 集成算法的参数空间与网格优化
- 三层交换机工作原理介绍
- 人力资源管理系统、OA、行政管理系统、考勤管理、资产管理、车辆管理、绩效管理、员工管理、招聘、入职、离职、转正、加班、调休、企业OA系统、axure原型、rp源文件、web端后台管理原型、高保真原型
- 电池供电的电容麦_板儿砖变电池?!是的,科学家已成功实现这一功能
- 开课吧Java教程什么是类集接口
- 外挂(目前看不懂_转帖不要怪我抄袭只是想学习而已)
- AI cs5序列号 注册机
- 使用HBuilder mui将图片保存到手机相册(移动端将图片、文件保存至手机相册)
- 你是外包,麻烦不要偷吃零食。。。网友:...
- 如何在笔试的时候绕开切屏提示
- uniapp调用手机摄像头_uniapp原生插件开发之调用原生方法(android)
- JAVA实现分治法的合并排序及解析
- 亚历山大·谢尔盖耶维奇·普希金
- C++实现FTP登陆功能
- menuconfig的执行过程
- 杂谈之WEB前端工程师身价
- windows服务安装完后自动启动
- 充电宝转换率排行,转化率最好的充电宝推荐