1.一维插值函数

Matlab中有现成的一维插值函数interp1,语法为

 y=interp1(x0,y0,x,'method')

x0,y0是已知的数据向量,其中x应以升序或者降序排列(所有的插值方法要求x0是单调的),x1是插值点的自变量坐标向量;

其中method指定插值的方法,默认为线性插值。其值可为

 'nearest'   最近项插值 'linear'    线性插值 'spline'    立方样条插值 'cubic'    立方插值

当x0为等距时可以用快速插值法,使用快速插值法的格式为'*nearest'、'*linear'、'*spline'、'*cubic'。

实例:

y=1/(x^3+2)  -4<=x<=4  用13个节点作三种插值,并比较结果。

在MATLAB中新建脚本,代码如下:

x0=-4:0.5:4;
y0=1./(2+x0.^3);
x=-4:0.2:4;
y1=interp1(x0,y0,x,'linear');
y2=interp1(x0,y0,x,'spline');
y3=interp1(x0,y0,x,'nearst');
subplot(2,2,1),plot(x0,y0,'r-p');title('y=1/(x^3+2)');%suplot一个窗口显示多个图形,并排版
subplot(2,2,2),plot(x0,y0,'r-',x,y1);title('linear');
subplot(2,2,3),plot(x0,y0,'r-',x,y2);title('spline');
subplot(2,2,4),plot(x0,y0,'r-',x,y3);title('nearst');

保存并运行,得到如下:


2.三次样条插值

 在Matlab中数据点称之为断点。如果三次样条插值没有边界条件,最常用的方法,就是采用非扭结(not-a-knot)条件。这个条件强迫第1个和第2个三次多项式的三阶导数相等。对最后一个和倒数第2个三次多项式也做同样地处理。

Matlab中三次样条插值spline有如下函数

 y=interp1(x0,y0,x,'spline');

 y=spline(x0,y0,x);

 pp=csape(x0,y0,conds);

 pp=csape(x0,y0,conds,valconds);y=ppval(pp,x);

其中x0,y0是已知数据点,x是插值点,y是插值点的函数值。

对于三次样条插值,提倡使用函数csape,csape的返回值是pp形式,要求插值点的函数值,必须调用函数ppval。

pp=csape(x0,y0)使用默认的边界条件,即Lagrange边界条件。

pp=csape(x0,y0,conds,valconds)中的conds指定插值的边界条件,其值可为

'complete'    边界为一阶导数,一阶导数的值在valconds参数中给出,若忽略valconds参数,则按缺省情况处理。

'not-a-knot'   非扭结条件。

'periodic'     周期条件。

'second'      边界为二阶导数,二阶导数的值在valconds参数中给出,若忽略valconds参数,二阶导数的缺省值为[0, 0]。

'variational'   设置边界的二阶导数值为[0,0]。

对于一些特殊的边界条件,可以通过conds的一个矩阵来表示,conds元素的取值为0,1,2。

conds(i)=j的含义是给定端点的阶导数,即conds的第一个元素表示左边界的条件,第二个元素表示右边界的条件,conds=[2,1]表示左边界是二阶导数,右边界是一阶导数,对应的值由valconds给出。

详细情况请使用帮助doccsape。

实例1

x0=[0   3   5   7   9   11   12   13   14  15];
y0=[0  1.2  1.7  2.0  2.1  2.0  1.8  1.2   1.0  1.6];
x=0:0.1:15;
y1=interp1(x0,y0,x);
y2=interp1(x0,y0,x,'spline');
pp1=csape(x0,y0);
y3=ppval(pp1,x);
pp2=csape(x0,y0,'second');
y4=ppval(pp2,x);
[x',y1',y2',y3',y4']
subplot(1,3,1)
plot(x0,y0,'+',x,y1)
title('Piecewise linear')
subplot(1,3,2)
plot(x0,y0,'+',x,y2)
title('Spline1')
subplot(1,3,3)
plot(x0,y0,'+',x,y3)
title('Spline2')
dx=diff(x);
dy=diff(y3);
dy_dx=dy./dx;
dy_dx0=dy_dx(1)
ytemp=y3(131:151);
ymin=min(ytemp);
index=find(y3==ymin);
xmin=x(index);
[xmin,ymin]

实例2:

代码如下:

x0=0.15:0.01:0.18;
y0=[3.5    1.5 2.5 2.8];
pp=csape(x0,y0)   %默认的边界条件,Lagrange边界条件
format long g
xishu=pp.coefs   %显示每个区间上三次多项式的系数
s=quadl(@(t)ppval(pp,t),0.15,0.18)  %求积分
format  %恢复短小数的显示格式
程序运行后得到:
xishu =-616666.666666667                     33500         -473.333333333334                       3.5-616666.666666667                     15000          11.6666666666671                       1.5-616666.666666668         -3499.99999999999          126.666666666667                       2.5s =0.068625

数学建模 | MATLAB学习 | 插值 一维插值函数、三次样条插值相关推荐

  1. 数学建模 | MATLAB学习 | 蒙特卡洛算法

     蒙特卡洛方法也称为统计模拟法.随机抽样技术.计算机随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法.它源于世界著名的赌城-摩纳哥的M ...

  2. 视频教程-MATLAB数学建模-Matlab

    MATLAB数学建模 图像和算法等领域有多年研究和项目经验:指导发表科技核心期刊经验丰富:多次指导数学建模爱好者参赛. 宋星星 ¥12.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+ ...

  3. matlab中离开网格的流量,数学建模【数据处理方法(一维、二维插值方法;数据拟合方法;插值and拟合的MATLAB实现)】...

    [学习网址:MOOC---郑州轻工业大学---数学建模与实验]数学建模专栏 笔记01[第1.2章][概述.软件介绍] 笔记02[第3章][数据处理方法] 笔记03[第4章][规划模型] 笔记04[第5 ...

  4. matlab中x从0到5不含0,关于MATLAB的数学建模算法学习笔记

    关于MATLAB的数学建模算法学习笔记 目录 线性规划中应用: (3) 非线性规划: (3) 指派问题;投资问题:(0-1问题) (3) 1)应用fmincon命令语句 (3) 2)应用指令函数:bi ...

  5. matlab已知飞机下轮廓线,数学建模matlab插值及拟合.ppt

    数学建模matlab插值及拟合 2013数学建模培训 插值与拟合 插值与拟合属数值分析中函数逼近内容.在数学建模竞赛中,插值与拟合是一种常用的数据分析手段,被公认为建模中的十大算法之一. 本节首先通过 ...

  6. 数学建模-Lingo学习

    文章目录 数学建模-Lingo学习 注意: Lingo的变量: 入门案例 用Lingo解方程 题1(两个等式方程组成的方程组) 题2(两个等式方程和两个不等式方程组成的方程组) 线性规划基础 题 集合 ...

  7. 数学建模算法学习笔记

    数学建模算法学习笔记 作为建模Man学习数学建模时做的笔记 参考文献: <数学建模姜启源第四版> 网上搜罗来的各种资料,侵删 1.线性预测 levinson durbin算法,自相关什么的 ...

  8. 数学建模之减肥计划 matlab编程,数学建模matlab算法大全第02章整数规划.pdf

    数学建模matlab算法大全第02章整数规划 第二章 整数规划 §1 概论 1.1 定义 规划中的变量(部分或全部)限制为整数时,称为整数规划.若在线性规划模型中, 变量限制为整数,则称为整数线性规划 ...

  9. 数学建模算法学习笔记 已完结

    这是为了准备国赛突击学习的模型算法,我在原有的基础上加上自己的理解虽然不知道对不对,就是为了记录下自己学的模型他究竟是个什么东西,语言通俗,但是极不准确,只适合做一个大概的了解,建议大家详细的还是要看 ...

最新文章

  1. uchome后台系统配置分析
  2. 软件项目版本号的命名格式
  3. 变分自编码器系列:VAE + BN = 更好的VAE
  4. 技术无“学历” 从大专学校走出来的少年AI狂人
  5. android TextView 的setTextSize方法的使用
  6. Sublime Text 3118 集成插件汉化定制版——赵亮(碧海情天)
  7. java linux root权限管理_新的 Linux sudo 漏洞使本地用户获得 root 权限
  8. nio和bio的原理_Java的BIO,NIO和AIO的区别于演进
  9. 130个你需要了解的VIM命令
  10. c# 指定打开某个路径下的CMD_【自学C#】|| 笔记 25 文件的操作
  11. 教你如何在Ubuntu中创建 Sudo用户
  12. Android:使用SharedPreferences进行数据存储
  13. java项目源码分享_ssm项目分享600套
  14. 黑色背景的DW代码配色方案 Colors.xml
  15. 网易老司机花式刷屏,腾讯爸爸欲教其做人,最终结局...
  16. 推荐一款java微信答题小程序源码知识竞赛问答pk头脑答题游戏
  17. 突破运营商 QoS 封锁,WireGuard 真有“一套”!
  18. VP9编码(3)-- 符号
  19. CAD中怎么给设备赋值?
  20. 统计物理α和β方法体系介绍

热门文章

  1. 微服务09——中间件
  2. SSTV慢速扫描的几种模式优劣对比
  3. 【Spring】普通类获取Spring容器的bean的方法
  4. Object.assign与vue $set
  5. 全国计算机二级算国奖吗,如何区分竞赛证书的等级和含金量?(太多人傻傻分不清国奖、省奖、市奖)...
  6. Top 10 顶级项目管理工具
  7. 【Python--torch(激活函数说明+代码讲解)】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh)
  8. arm 2022.10.24
  9. 金蝶K3系统19年度增值税率调整(16改13,10改9)操作步骤
  10. 详解BlockingQueue