1.拟合出的曲线通过离散的路径点

x= [0;0.0128205128205128;0.0256410256410256;0.0384615384615385;0.0512820512820513;0.0641025641025641;0.0769230769230769;0.0897435897435897;0.102564102564103;0.115384615384615;0.128205128205128;0.141025641025641;0.153846153846154;0.166666666666667;0.179487179487180;0.192307692307692;0.205128205128205;0.217948717948718;0.230769230769231;0.243589743589744;0.256410256410256;0.269230769230769;0.282051282051282;0.294871794871795;0.307692307692308;0.320512820512821;0.333333333333333;0.346153846153846;0.358974358974359;0.371794871794872;0.384615384615385;0.397435897435897;0.410256410256410;0.423076923076923;0.435897435897436;0.448717948717949;0.461538461538462;0.474358974358974;0.487179487179487;0.500000000000000;0.512820512820513;0.525641025641026;0.538461538461538;0.551282051282051;0.564102564102564;0.576923076923077;0.589743589743590;0.602564102564103;0.615384615384615;0.628205128205128;0.641025641025641;0.653846153846154;0.666666666666667;0.679487179487180;0.692307692307692;0.705128205128205;0.717948717948718;0.730769230769231;0.743589743589744;0.756410256410256;0.769230769230769;0.782051282051282;0.794871794871795;0.807692307692308;0.820512820512821;0.833333333333333;0.846153846153846;0.858974358974359;0.871794871794872;0.884615384615385;0.897435897435898;0.910256410256410;0.923076923076923;0.935897435897436;0.948717948717949;0.961538461538462;0.974358974358974;0.987179487179487;1]
y = [0;0;-0.00210988000000000;-0.00115278000000000;-0.000152780000000000;0.00281970000000000;0.00381978000000000;0.00483972000000000;0.00793453000000000;0.0115414000000000;0.0133153000000000;0.0146549000000000;0.0157498000000000;0.0166018000000000;0.0172609000000000;0.0176989000000000;0.0179270000000000;0.0179989000000000;0.0179386000000000;0.0178000000000000;0.0176083000000000;0.0174145000000000;0.0172459000000000;0.0171472000000000;0.0171085000000000;0.0171238000000000;0.0171999000000000;0.0173190000000000;0.0174359000000000;0.0175483000000000;0.0176107000000000;0.0175886000000000;0.0174669000000000;0.0172009000000000;0.0166578000000000;0.0158427000000000;0.0146909000000000;0.0132764000000000;0.0114232000000000;0.00985331000000000;0.00798939000000000;0.00573892000000000;0.00300738000000000;0;-0.00443505000000000;-0.00944156000000000;-0.0155150000000000;-0.0228853000000000;-0.0318467000000000;-0.0427468000000000;-0.0560513000000000;-0.0721688000000000;-0.0913496000000000;-0.113515000000000;-0.137977000000000;-0.162830000000000;-0.185098000000000;-0.201125000000000;-0.207564000000000;-0.203193000000000;-0.189337000000000;-0.169244000000000;-0.146676000000000;-0.123783000000000;-0.102184000000000;-0.0817261000000000;-0.0612605000000000;-0.0395437000000000;-0.0159423000000000;0.00880633000000000;0.0333237000000000;0.0563616000000000;0.0781288000000000;0.101801000000000;0.130293000000000;0.157632000000000;0.171608000000000;0.180132000000000;0.172427000000000]
sp = spapi(3,x,y);
fnplt(sp);

其中:(x,y)为离散的数据点;spapi(3,x,y)表示用3阶B样条曲线对离散的数据点进行拟合,并且要经过给定的离散数据点;fnplt(sp)代表画出该B样条曲线。

结果如下图:

2.拟合后的曲线进行了平滑但不一定过数据点

x= [0;0.0128205128205128;0.0256410256410256;0.0384615384615385;0.0512820512820513;0.0641025641025641;0.0769230769230769;0.0897435897435897;0.102564102564103;0.115384615384615;0.128205128205128;0.141025641025641;0.153846153846154;0.166666666666667;0.179487179487180;0.192307692307692;0.205128205128205;0.217948717948718;0.230769230769231;0.243589743589744;0.256410256410256;0.269230769230769;0.282051282051282;0.294871794871795;0.307692307692308;0.320512820512821;0.333333333333333;0.346153846153846;0.358974358974359;0.371794871794872;0.384615384615385;0.397435897435897;0.410256410256410;0.423076923076923;0.435897435897436;0.448717948717949;0.461538461538462;0.474358974358974;0.487179487179487;0.500000000000000;0.512820512820513;0.525641025641026;0.538461538461538;0.551282051282051;0.564102564102564;0.576923076923077;0.589743589743590;0.602564102564103;0.615384615384615;0.628205128205128;0.641025641025641;0.653846153846154;0.666666666666667;0.679487179487180;0.692307692307692;0.705128205128205;0.717948717948718;0.730769230769231;0.743589743589744;0.756410256410256;0.769230769230769;0.782051282051282;0.794871794871795;0.807692307692308;0.820512820512821;0.833333333333333;0.846153846153846;0.858974358974359;0.871794871794872;0.884615384615385;0.897435897435898;0.910256410256410;0.923076923076923;0.935897435897436;0.948717948717949;0.961538461538462;0.974358974358974;0.987179487179487;1]
y = [0;0;-0.00210988000000000;-0.00115278000000000;-0.000152780000000000;0.00281970000000000;0.00381978000000000;0.00483972000000000;0.00793453000000000;0.0115414000000000;0.0133153000000000;0.0146549000000000;0.0157498000000000;0.0166018000000000;0.0172609000000000;0.0176989000000000;0.0179270000000000;0.0179989000000000;0.0179386000000000;0.0178000000000000;0.0176083000000000;0.0174145000000000;0.0172459000000000;0.0171472000000000;0.0171085000000000;0.0171238000000000;0.0171999000000000;0.0173190000000000;0.0174359000000000;0.0175483000000000;0.0176107000000000;0.0175886000000000;0.0174669000000000;0.0172009000000000;0.0166578000000000;0.0158427000000000;0.0146909000000000;0.0132764000000000;0.0114232000000000;0.00985331000000000;0.00798939000000000;0.00573892000000000;0.00300738000000000;0;-0.00443505000000000;-0.00944156000000000;-0.0155150000000000;-0.0228853000000000;-0.0318467000000000;-0.0427468000000000;-0.0560513000000000;-0.0721688000000000;-0.0913496000000000;-0.113515000000000;-0.137977000000000;-0.162830000000000;-0.185098000000000;-0.201125000000000;-0.207564000000000;-0.203193000000000;-0.189337000000000;-0.169244000000000;-0.146676000000000;-0.123783000000000;-0.102184000000000;-0.0817261000000000;-0.0612605000000000;-0.0395437000000000;-0.0159423000000000;0.00880633000000000;0.0333237000000000;0.0563616000000000;0.0781288000000000;0.101801000000000;0.130293000000000;0.157632000000000;0.171608000000000;0.180132000000000;0.172427000000000]
w = ones(size(x)); w([1 end]) = 100;
sp = spaps(x,y, 1.e-2, w, 3);
fnplt(sp);

其中:(x,y)为离散的数据点;spaps(x,y, 1.e-2, w, 3)表示用B样条曲线对离散的数据点进行平滑拟合,不一定经过给定的离散数据点,1.e-2为允许的拟合误差,w向量第一个分量和最后一个分量为100,其余为1,代表拟合后的起点和终点与数据点必须很接近。

结果如下图:

从曲线的最低点可看出,其与原数据点存在较大的偏差。

如果将1.e-2改为1.e-5,可得:

可以看出,上图更接近于原始的数据点。

附:样条工具箱函数

  1. 三次样条函数
    csapi 插值生成三次样条函数
    csape 生成给定约束条件下的三次样条函数
    csaps 平滑生成三次样条函数
    cscvn 生成一条内插参数的三次样条曲线
    getcurve 动态生成三次样条曲线

  2. 分段多项式样条函数
    ppmak 生成分段多项式样条函数
    ppual 计算在给定点处的分段多项式样条函数值

  3. B样条函数
    spmak 生成B样条函数
    spcrv 生成均匀划分的B样条函数
    spapi 插值生成B样条函数
    spap2 用最小二乘法拟合生成B样条函数
    spaps 对生成的B样条曲线进行光滑处理
    spcol 生成B样条函数的配置矩阵

  4. 有理样条函数
    rpmak 生成有理样条函数
    rsmak 生成有理样条函数

  5. 样条操作函数
    fnval 计算在给定点处的样条函数值
    fmbrk 返回样条函数的某一部分(如断点或系数等)
    fncmb 对样条函数进行算术运算
    fn2fm 把一种形式的样条函数转化成另一种形式的样条函数
    fnder 求样条函数的微分(即求导数)
    fndir 求样条函数的方向导数
    fnint 求样条函数的积分
    fnjmp 在间断点处求函数值
    fnplt 画样条曲线图
    fnrfn 在样条曲线中插入断点。
    fntlr 生成tarylor系数或taylor多项式

  6. 样条曲线端点和节点处理函数
    augknt 在已知节点数组中添加一个或多个节点
    aveknt 求出节点数组元素的平均值
    brk2knt 增加节点数组中节点的重次
    knt2brk 从节点数组中求得节点及其重次
    knt2mlt 从节点数组中求得节点及其重次
    sorted 求出节点数组的元素在另一节点数组中属于第几个分量
    aptknt 求出用于生成样条曲线的节点数组
    newknt 对分段多项式样条函数进行重分布
    optknt 求出用于内插的最优节点数组
    chbpnt 求出用于生成样条曲线的合适节点数组

Matlab中对离散数据点进行B样条曲线拟合相关推荐

  1. matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中

    MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...

  2. matlab存储excel数据,怎么把matlab表格数据写入excel-怎么把matlab中处理的数据存入到excel中...

    怎么把matlab中处理的数据存入到excel中 1.上双开matlab 2.接着可以直接在命进行相关的操作 3.也可以直接新建一个脚本,我这里是直接在命令行进行的 4.现在我们介绍一下关于将数据变量 ...

  3. matlab导入s2p,如何将S参数导入matlab中可用的数据文件

    如何将S参数导入matlab中可用的数据文件 导出成*.txt,就可以 Q: The export function of CST MWS support data format as Magnitu ...

  4. 介绍一种在MATLAB中获取股市数据的方法

    介绍一种在MATLAB中获取股市数据的方法: >>clear >>c=yahoo 系统会返回 c = url: 'http://finance.yahoo.com'       ...

  5. MATLAB图形绘制--离散数据绘图

    离散数据绘图 假如我们现在有五个学生的成绩,我们想要把他们的成绩跟名字一一对应的画在图上,必要的时候可以用折线连接,这个时候我们就要了解以下函数: xtick xticklabel gca set a ...

  6. matlab中读取txt数据文件(txt文本文档)

    根据txt文档不同种类介绍不同的读取数据方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如test.txt文件,内容为 17.901 -1.111 ...

  7. matlab导入word数据,如何将Excel数据导入MATLAB中?/excel数据导入word模板

    如何将Excel数据导入MATLAB中? 从excel中导入,可以用xlsread()函数. 例如: A=xlsread('C:\Users\Administrator\Desktop\07-29预. ...

  8. matlab中根据表格数据画图,excel 表格数据画图-如何利用matlab根据excel表格里面的数据画图...

    在matlab上如何导入excel表格然后画图 "在excel中由数据画图,且显示图线的函数"的操作步骤是: 1.以Excel 2016为例,打开Excel工作表: 2.选择数据区 ...

  9. MATLAB中把Excel数据矩阵化,excel将表格数据矩阵-MATLAB怎么读取EXCEL中矩阵形式的数据,并存放在一......

    求EXCEL表格高手,如何在已知矩阵中,符合矩阵内条... =SUM((B$8=TRANSPOSE(OFFSET($B$1:$C$1,MATCH($A9,$A$2:$A$6,),)))*1) 数组公输 ...

最新文章

  1. windows安装配置git和Tortoisegit
  2. mysql view none,MySQL笔记之视图的使用详解
  3. 信息摘要算法之四:SHA512算法分析与实现
  4. android之视频直播与播放Vitamio
  5. python 日期处理_python 处理时间和日期
  6. 学计算机的副部级,中国31所副部级大学排名
  7. linux crontab 每5分钟执行一次_第十一章:走进Linux世界——源码包管理and任务计划。...
  8. 081 re正则表达式模块
  9. 自动驾驶 5-3 前馈速度控制 Feedforward Speed Control
  10. redhat7配置本地yum源
  11. 美国邮编大全及邮政编码规范
  12. 软件集成测试分析,软件集成测试报告模板
  13. c程序-RGB转十六进制
  14. 瑞典皇家理工学院计算机学什么,瑞典皇家理工学院有哪些研究生专业
  15. uni-app学习(九):computed
  16. 关于电脑新建共享文件夹相关教程
  17. 知识问答 - 名侦探柯南
  18. Python从入门到精通 | Python作用与定义 | 三种注释的语法(三)
  19. 任务管理器--内存篇(上)
  20. Ubuntu18.04和win10双系统完美安装(dell笔记本电脑)

热门文章

  1. 中英文说明书丨艾美捷MAPT单克隆抗体
  2. Grafana平台监控应用实例
  3. Unity官方案例学习——游戏设计理念(游戏的灵魂)
  4. linux weblogic 防火墙,本地访问weblogic控制台无反应,关闭linux操作系统防火墙
  5. 小程序统一未登录引导登录界面
  6. Android Studio 使用起来很卡,内存CPU爆了
  7. 自暴旅游内幕,黄金周前,给大家的提示
  8. 乐高积木树屋_我了解到的使乐高积木发光的10件事
  9. 利用iText生成pdf报表
  10. 有源晶振的几种输出波形