function InterpCubicSplineCurv()
%本程序的功能是构造一个插值三次样条曲线N = 12;
SamplPs = CollectSPFergusonCi2(N);%采集型值点
x=SamplPs(1,:);
y=SamplPs(2,:);
sT = [0,1/3];
eT = [0,-1/3];s = AccuArcL(SamplPs');%采用累加弦长参数化方法对数据点进行参数化
%也就是为每个点指定一个参数mxs = Intrepolation3Spline(s,x,sT(1),eT(1));%计算切矢量在x方向的分量
mys = Intrepolation3Spline(s,y,sT(2),eT(2));%计算切矢量在y方向的分量mxss=[sT(1) mxs' eT(1)];
myss=[sT(2) mys' eT(2)];n=length(x)-1;
k=1;
for i=1:nsmx=mxss(i);emx=mxss(i+1);smy=myss(i);emy=myss(i+1);h=s(i+1)-s(i);%在每段中采集21个点for j=1:21u=(j-1)/20;xf(k)=[1 u u*u u*u*u]*[1 0 0 0;0 0 1 0;-3 3 -2 -1;2 -2 1 1]*[x(i) x(i+1) h*smx h*emx]';yf(k)=[1 u u*u u*u*u]*[1 0 0 0;0 0 1 0;-3 3 -2 -1;2 -2 1 1]*[y(i) y(i+1) h*smy h*emy]';%采集的点放入整体数组xf和yfk=k+1;end%在每段中采集21个点
end
%对计算出的点进行密化采样figure%开一个新的图形窗口
hold on
plot(xf,yf,'lineWidth',2)
plot(x,y,'k*')
hold off
box on%坐标轴显示为包围盒的形式
axis equal
function ms = Intrepolation3Spline(X,Y,sm,em)
%采用插值参数三次样条为每个型值点计算切矢量n=length(X)-2;%注意到首末端点要添加边界条件的
CoeffMat=zeros(n,n);%预定义线性方程组的系数矩阵
Eqb=zeros(1,n);%预定义线性方程组的常数向量
n=n+2;
for i=2:n-1hi=X(i)-X(i-1);hiq=X(i+1)-X(i);lmdi=hiq/(hi+hiq);miui=1-lmdi;ci=3*(lmdi*(Y(i)-Y(i-1))/hi+miui*(Y(i+1)-Y(i))/hiq);j=i-1;if(j==1)CoeffMat(j,1)=2;CoeffMat(j,2)=miui;Eqb(j)=ci-lmdi*sm;elseif(j==n-2)CoeffMat(j,n-3)=lmdi;CoeffMat(j,n-2)=2;Eqb(j)=ci-miui*em;elseCoeffMat(j,j-1)=lmdi;CoeffMat(j,j)=2;CoeffMat(j,j+1)=miui;Eqb(j)=ci;end
end
%为矩阵CoeffMat和常数向量赋值Eqb
ms=CoeffMat\Eqb';%求解线性方程组得到切矢量
function SamplPs = CollectSPFergusonCi2(N)
%N表示样点个数xita = [0,pi/27,pi/20,pi/18,pi/5,pi/3,pi/2,3*pi/4,3.5*pi/4,pi];
%根据参数方程计算圆周上的点
SamplPs(1,:) = cos(xita);%x的坐标放在矩阵的第一行
SamplPs(2,:) = sin(xita);%y的坐标放在矩阵的第二行
%根据参数方程计算圆周上的点
% plot(SamplPs(1,:),SamplPs(2,:),'k*')%测试程序正确性用的
% axis equal;

MATLAB---构造一个插值三次样条曲线相关推荐

  1. matlab导数曲线怎样画,matlab三次样条曲线的绘制(spline和csape函数详解)

    matlab三次样条函数的绘制(spline和csape函数详解) 样条函数是工程中常用的插值函数.早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后沿 ...

  2. matlab三次样条曲线的绘制(spline和csape函数详解)

    matlab三次样条函数的绘制(spline和csape函数详解) 前言 1.spline函数详解 1.一维非节点边界 2.第二边界条件 3.高维无约束 4.高维第二边界 5.利用第二边界条件绘制圆 ...

  3. Matlab数值分析实例:三次样条插值

    Matlab数值分析实例:三次样条插值 任务要求 分析 代码实现 总结 任务要求 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低.这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺 ...

  4. 三次样条曲线插值的基本原理及其C#实现

    声明:本人空间的所有文章,若无特别声明,皆为本人原创,可自由转载,但要注明原作者和原始出处,不可作为商业用途. 下面的内容是直接从Word文档复制粘贴出来的,有很多内容丢失,完整的PDF版本可到百度网 ...

  5. 三次样条曲线插值(cubic spline)实例应用

    目标 工作需要,需要达成这样得一个需求,给一系列得三维点,三维点按照顺序连接,形成一条折线.需要依照这条折线,进行曲线1m等距离插值.具体如下图 其中,红色圆圈点为原始点集OrigPoints(原始点 ...

  6. 【Matlab】数据插值

    数据插值 插值与拟合的区别: 实现方法:插值要求曲线穿过样本点,而拟合不需要穿过样本点,只要求总体误差最小. 结果形式:插值是分段逼近样本点,没有同一的逼近函数:函数拟合则用一个函数去逼近,有完整的表 ...

  7. MATLAB数据分析(插值运算和曲线拟合)

    MATLAB数据分析(插值运算和曲线拟合) MATLAB数据分析 在数学研究和工程应用中,我们常常需要对某些环节进行反复的测验或测试,以获取更多的数据支持最优决策,但是由于环境条件的限制,我们往往只能 ...

  8. matlab 插值生成曲面,[转]Matlab曲面拟合和插值

    插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图. 在matlab中都有特定的函数来完成这些功能. 这两种方法的确别在于: 当测量值是准确的,没有误差时,一般用插值: 当 ...

  9. matlab怎么输出插值,matlab插值方法0.ppt

    matlab插值方法0 * 数学建模暑期培训 数 据 插 值 * 实验目的 实验内容 2.掌握用数学软件包求解插值问题. 1.了解插值的基本内容. [1]一维插值 [2]二维插值 [3]实验作业 * ...

最新文章

  1. python requests 爬取数据
  2. 2021年春季学期-信号与系统-第二次作业参考答案-第四小题
  3. [UML]UML系列——类图class的关联关系(聚合、组合)
  4. JSP、Servlet、Tomcat、JDK、J2EE版本比较
  5. sublime+virtualenv+pyspark执行的时候报Unable to load native-hadoop library for your platform
  6. 真正CSDN博客文章一键转载插件(含源码)
  7. Codeforces Round #245 (Div. 1) E. Points and Segments 欧拉回路 + 建模
  8. Java StringBuilder getChars()方法与示例
  9. 关闭浏览器 清空session_跨境网络小知识之Session
  10. Thymeleaf视图
  11. 事务未提交导致记录被锁的解决方法
  12. APIO/CTSC2017游记
  13. Unit23 Can I help you?
  14. python嵌套列表操作方法_python中多层嵌套列表的拆分方法
  15. python中int对象不可迭代_python - 情感分析接收错误:'int'对象不可迭代_python-3.x_酷徒编程知识库...
  16. Rose环境和用例图
  17. comps电磁场模拟软件_|Mentor Graphics IE3D(电磁场仿真软件)下载v15.0官方版 - 欧普软件下载...
  18. 日志系统模块基础、C语言实现一个日志模块、zlog日志模块基础
  19. 原生AJAX GET请求
  20. 对比MySQL和Pandas计算用户最大连续登录天数

热门文章

  1. AcWing 225. 矩阵幂求和
  2. Linux命令——parted
  3. RTMP直播推流(二)音频推流
  4. 做抖音自媒体能赚钱吗?
  5. 欢迎火狐FireFox正式进入中国
  6. js实现鼠标悬浮图片放大预览
  7. 更聪明地学习,而不是苦读——《如何高效学习》
  8. X-Space二级(三级)域名配置
  9. UE4 时光倒流(蓝图)
  10. 关于遍历,看这篇文章就足够了【find()、findIndex()、forEach()、splice()、slice()详解】