该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

在最简单的用法中,spline获取数据x和y以及期望值xi,寻找拟合x和y的三次样条内插多项式,然后,计算这些多项式,对每个xi的值,寻找相应的yi。例如:

>>x=0 : 12;

>>y=tan(pi*x/25);

>>xi=linspace(0, 12);

>>yi=spline(x, y, xi)

>>plot(x, y, ‘ o ‘, xi, yi), title(‘ Spline fit ‘)

(见图12.1样条拟合)

这种方法适合于只需要一组内插值的情况。不过,如果需要从相同数据集里获取另一组内插值,再次计算三次样条系数是没有意义的。在这种情况下,可以调用仅带前两个参量的spline:

图12.1 样条拟合

>>pp=spline(x, y)

pp =

Columns 1 through 7

10.0000 1.0000 12.0000 0 1.0000 2.0000 3.0000

Columns 8 through 14

4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000

Columns 15 through 21

11.0000 12.0000 4.0000 0.0007 0.0007 0.0010 0.0012

Columns 22 through 28

0.0024 0.0019 0.0116 -0.0083 0.1068 -0.1982 1.4948

Columns 29 through 35

1.4948 -0.0001 0.0020 0.0042 0.0072 0.0109 0.0181

Columns 36 through 42

0.0237 0.0586 0.0336 0.3542 -0.2406 4.2439 0.1257

Columns 43 through 49

0.1276 0.1339 0.1454 0.1635 0.1925 0.2344 0.3167

Columns 50 through 56

0.4089 0.7967 0.9102 4.9136 0 0.1263 0.2568

Columns 57 through 63

0.3959 0.5498 0.7265 0.9391 1.2088 1.5757 2.1251

Columns 64 through 65

3.0777 5.2422

当采用这种方式调用时,spline返回一个称之为三次样条的pp形式或分段多项式形式的数组。这个数组包含了对于任意一组所期望的内插值和计算三次样条所必须的全部信息。给定pp形式,函数ppval计算该三次样条。例如,

>>yi=ppval(pp, xi);

计算先前计算过的同样的yi。

类似地,

>>xi2=linspace(10, 12);

>>yi2=ppval(pp, xi2);

运用pp形式,在限定的更细区间[10,12]内,再次计算该三次样条。

>>xi3=10 : 15

>>yi3=ppval(pp, xi3)

yi3 =

3.0777 5.2422 15.8945 44.0038 98.5389 188.4689

它表明,可在计算三次多项式所覆盖的区间外,计算三次样条。当数据出现在最后一个断点之后或第一个断点之前时,则分别运用最后一个或第一个三次多项式来寻找内插值。

上述给定的三次样条pp形式,存储了断点和多项式系数,以及关于三次样条表示的其它信息。因为,所有信息都被存储在单个向量里,所以这种形式在MATLAB中是一种方便的数据结构。当要计算三次样条表示时,必须把pp形式分解成它的各个表示段。在MATLAB中,通过函数unmkpp完成这一过程。运用上述pp形式,该函数给出如下结果:

>>[break, coefs, npolys, ncoefs]=unmkpp(pp)

breaks =

Columns 1 through 12

0 1 2 3 4 5 6 7 8 9 10 11

Column 13

12

coefs =

0.0007 -0.0001 0.1257 0

0.0007 0.0020 0.1276 0.1263

0.0010 0.0042 0.1339 0.2568

0.0012 0.0072 0.1454 0.3959

0.0024 0.0109 0.1635 0.5498

0.0019 0.0181 0.1925 0.7265

0.0116 0.0237 0.2344 0.9391

-0.0083 0.0586 0.3167 1.2088

0.1068 0.0336 0.4089 1.5757

-0.1982 0.3542 0.7967 2.1251

1.4948 -0.2406 0.9102 3.0777

1.4948 4.2439 4.9136 5.2422

npolys =

12

ncoefs =

4

这里break是断点,coefs是矩阵,它的第i行是第i个三次多项式,npolys是多项式的数目,ncoefs是每个多项式系数的数目。注意,这种形式非常一般,样条多项式不必是三次。这对于样条的积分和微分是很有益的。

给定上述分散形式,函数mkpp恢复了pp形式。

>>pp=mkpp(break, coefs)

pp =

Columns 1 through 7

10.0000 1.0000 12.0000 0 1.0000 2.0000 3.0000

Columns 8 through 14

4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000

Columns 15 through 21

11.0000 12.0000 4.0000 0.0007 0.0007 0.0010 0.0012

Columns 22 through 28

0.0024 0.0019 0.0116 -0.0083 0.1068 -0.1982 1.4948

Columns 29 through 35

1.4948 -0.0001 0.0020 0.0042 0.0072 0.0109 0.0181

Columns 36 through 42

0.0237 0.0586 0.0336 0.3542 -0.2406 4.2439 0.1257

Columns 43 through 49

0.1276 0.1339 0.1454 0.1635 0.1925 0.2344 0.3167

Columns 50 through 56

0.4089 0.7967 0.9102 4.9136 0 0.1263 0.2568

Columns 57 through 63

0.3959 0.5498 0.7265 0.9391 1.2088 1.5757 2.1251

Columns 64 through 65

3.0777 5.2422

因为矩阵coefs的大小确定了npolys和neofs,所以mkpp不需要npolys和ncoefs去重构pp形式。pp形式的数据结构仅在mkpp中给定为pp=[10 1 npolys break(:)‘ ncoefs coefs(:)‘]。前两个元素出现在所有的pp形式中,它们作为确认pp形式向量的一种方法。

matlab中三阶样条模型,【MATLAB编程】三次样条相关推荐

  1. 通信原理 | 信道模型 | matlab中瑞利衰落信道模型中的函数:raylrnd、raylpdf、raylcdf、raylinv、raylstat、raylfit

    matlab中瑞利衰落信道模型中的函数 1 matlab中的raylrnd(瑞利随机数) 2 matlab中的raylpdf(瑞利概率密度函数) 3 matlab中的raylcdf(瑞利累积分布函数) ...

  2. matlab中dist的命令,matlab dist函数

    dist--欧式距离加权函数(Euclidean distance weight function) 语法: Z = dist(W,P) df = dist('deriv') D = dist(pos ...

  3. matlab中错误使用fmincon,MATLAB中fmincon 函数问题

    MATLAB中fmincon 函数问题 Matlab的fmincon优化问题 请问: 各位高手帮忙看看我的程序又什么问题?显示错误 Error in ==> Fun at 33 [w,fval] ...

  4. 用MATLAB绘制国债NSS模型,Matlab在数字信号处理中的运用.ppt

    <Matlab在数字信号处理中的运用.ppt>由会员分享,可在线阅读,更多相关<Matlab在数字信号处理中的运用.ppt(68页珍藏版)>请在装配图网上搜索. 1.第七讲 M ...

  5. 如何在matlab中建立水箱模型_在MATLAB中实现水箱液位控制系统的设计

    在 MATLAB 中实现水箱液位控制系统的设计 [摘要] 本论文的目的是设计双容水箱液位串级控制系统. 在设计中充分利 用计算机技术, 自动控制技术, 以实现对水箱液位的串级控制. 首先对被控对象 的 ...

  6. matlab中集合的表示,Matlab常用命令集合

    1.常用命令-->管理命令和函数 addpath添加目录到MATLAB搜索路径doc在Web浏览器上现实HTML文档help显示Matlab命令和M文件的在线帮助helpwin helpdesk ...

  7. matlab中function c=li,matlab 函数表

    Matlab库函数命令大全 附录 MATLAB函数参考 附录1 常用命令 附录1.1 管理用命令 函数名 功能描述 函数名 功能描述 addpath 增加一条搜索路径 rmpath 删除一条搜索路径 ...

  8. matlab中oad什么意思,MATLAB函数参考

    MATLAB主要命令汇总: 附录1.1 管理用命令 函数名    功能描述    函数名    功能描述 addpath    增加一条搜索路径    rmpath    删除一条搜索路径 demo  ...

  9. matlab中(1 )什么意思,matlab中area(1)什么意?mat – 手机爱问

    2013-10-24 DirFeedthrough 什么意? s-function也就是system-function的缩写.说得简单,s-function就是用MATLAB所提供的模型不能完全满足用 ...

最新文章

  1. 想学python-为什么现在那么多人想学Python?
  2. Linux下进行Web服务器压力(并发)测试工具http_load、webbench、ab、Siege、autobench简单使用教程(转)...
  3. python类继承中构造方法_第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解...
  4. float php 运算_写给 PHP 程序员的 Python 学习指南
  5. FPGA学习(第8节)-Verilog设计电路的时序要点及时序仿真
  6. 一天完成一点,进度太慢了啊
  7. keras利用flow_from_directoryt自己构建数据集
  8. mac M1 下安装docker 及相关镜像
  9. pcs7服务器没有报警信息,PCS7服务器报警重启(工程师培训).pdf
  10. 我赔了10万元,因为PPT中用了这些字体-百格活动
  11. 对于多目标跟踪论模型CTracker的解析
  12. 怎么关闭win10虚拟机服务器,大神为你win10系统彻底关闭退出vmware虚拟机的方案...
  13. win10系统下如何打开bios如何打开Intel-VT-x教程
  14. 珍贵!分享!全国各省市最全乡镇、街道行政区划边界shp矢量数据+wgs84坐标系+2021年7月最新获取+2018年更新数据
  15. P4606 [SDOI2018]战略游戏
  16. 直播平台软件开发的前端如何实现整套视频直播技术流程
  17. Jenkins-springcloud项目打包并上传docker仓库
  18. python 读取邮件内容_python获取邮件内容(邮件内容为html)
  19. kettle 查询数据库写入文件_ETL KETTLE 读取csv文件写入数据库
  20. js: Math.random()获取随机数

热门文章

  1. 水波纹特效的C++模拟
  2. 直播liveapp Android,Rockett Live
  3. unity使用UniStorm插件根据当前城市动态修改天气效果
  4. 8除以2表示什么意思_你知道这些俗语的意思吗?1.三下五除二:( ) 2.八九不离十:( ) 3.九牛二虎之力:( ) 4.十万八千里:( )...
  5. 王道考研-操作系统b站学习第一章
  6. 前端学习知识点总结(1)
  7. python 2.7.9_python2.7.9 64位下载|
  8. Flask项目的云服务器选择和部署
  9. python取余还是相乘_python取余还是相乘_基于python 取余问题(%)详解
  10. 前端UI界面自动化测试-selenium-IDE