博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
非均匀B样条拟合MATLAB程序
阅读量:6166 次
发布时间:2019-06-21

本文共 1248 字,大约阅读时间需要 4 分钟。

直接上代码,多的不再说了。

1、写一个Base函数

function result = Bbase(i,k,u,t)%第i段k次B样条基,Deboor递推递归算法%t为变量,u(i)<=t
2、B样条程序
%------------------非均匀B样条拟合MATLAB程序-----------------cleark=3;x=load('data.txt');[n,m]=size(x);%-----------弦长参数化--------------------------------------u(k+n)=0;for i=1:n-1 u(k+i+1)=u(k+i)+sqrt((x(i+1,1)-x(i,1))^2+(x(i+1,2)-x(i,2))^2);end;L=u(n+k);for i=1:nu(k+i)=u(k+i)/L;end;for i=1:3u(k+i+n)=1;end%控制多边线plot(x(:,1),x(:,2),'o');hold on%------------反求n+2个控制点--------------------%首位重节点v1=v2%首位与控制多边形相切A=zeros(n+2);A(1,1)=1;A(1,2)=-1;A(2,2)=1;A(n+2,n+1)=-1;A(n+2,n+2)=1;A(n+1,n+1)=1;for i=3:n  for j=0:2    A(i,i+j-1)=Base(i+j-1,k,u,u(i+2));   endend%e:方程右边.e=0;for i=1:m    e(n+2,i)=0;endfor i=1:n    e(i+1,:)=x(i,:);end%求出控制点dd=inv(A)*e;plot(d(:,1),d(:,2),'g');hold on%------------插值并作出样条曲线-----------------x=0;y=0;down=0;for j=1:(n-1)    uu=(u(j+3)):0.0005:u(j+4);    for kk=1:length(uu)       down=down+1;        x(down)=d(j,1)*Base(j,3,u,uu(kk))+d(j+1,1)*Base(j+1,3,u,uu(kk))+d(j+2,1)*Base(j+2,3,u,uu(kk))+d(j+3,1)*Base(j+3,3,u,uu(kk));        y(down)=d(j,2)*Base(j,3,u,uu(kk))+d(j+1,2)*Base(j+1,3,u,uu(kk))+d(j+2,2)*Base(j+2,3,u,uu(kk))+d(j+3,2)*Base(j+3,3,u,uu(kk));    endendaxis('equal');plot(x,y,'red');xlabel('x');ylabel('y');grid on

 

 参考文章

转载地址:http://qpuba.baihongyu.com/

你可能感兴趣的文章
Spring常用注解
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
Apache通过mod_php5支持PHP
查看>>
java学习:jdbc连接示例
查看>>
Exchange 2013 PowerShell配置文件
查看>>
批量删除oracle中以相同类型字母开头的表
查看>>
飞翔的秘密
查看>>
7.对象创建型模式-总结
查看>>
6.13心得
查看>>
java父子进程通信
查看>>
Java集合---HashMap源码剖析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
用tar和split将文件分包压缩
查看>>
MyBatis启动:MapperStatement创建
查看>>
Linux磁盘分区与挂载
查看>>
大数据传输,文件传输的专业解决方案!
查看>>
常用URL地址
查看>>
struts国际化
查看>>
数据库 : 事物以及隔离性导致的问题
查看>>
Jquery乱码终极解决方案
查看>>