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

1、写一个Base函数

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

参考文章

3次非均匀B样条拟合程序

非均匀B样条拟合MATLAB程序的更多相关文章

  1. 蚁群算法 matlab程序(已执行)

    下面是解放军信息project大学一个老师编的matlab程序,请尊重原作者劳动,引用时请注明出处. 我经过改动添加了凝视,已经执行过,无误, function [R_best,L_best,L_av ...

  2. MATLAB程序:用FCM分割脑图像

    MATLAB程序:用FCM分割脑图像 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 脑图像基础知识请看:脑图像:FCM算法介绍请看:聚类——FCM:数据 ...

  3. mean shift聚类算法的MATLAB程序

    mean shift聚类算法的MATLAB程序 凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. mean shift 简介 mean shift, 写的 ...

  4. OpenFOAM——设置非均匀边界方法总结

    在使用OpenFOAM求解的时候我们经常需要设置非均匀的边界,比如我们在计算层流的时候,很多时候需要入口为充分发展的入口边界,下面我们就以入口处为充分发展的层流速度分布为总结OpenFOAM当中设定不 ...

  5. 【转】小波与小波包、小波包分解与信号重构、小波包能量特征提取 暨 小波包分解后实现按频率大小分布重新排列(Matlab 程序详解)

    转:https://blog.csdn.net/cqfdcw/article/details/84995904 小波与小波包.小波包分解与信号重构.小波包能量特征提取   (Matlab 程序详解) ...

  6. WPF:指定的命名连接在配置中找不到、非计划用于 EntityClient 提供程序或者无效的解决方法

    文/嶽永鹏 WPF 数据绑定中绑定到ENTITY,如果把数据文件做成一个类库,在UI文件中去应用它,可能遇到下面这种情况. 指定的命名连接在配置中找不到.非计划用于 EntityClient 提供程序 ...

  7. [zz]求一维序列的信息熵(香浓熵)的matlab程序实例

    对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵.    但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的, ...

  8. 条件随机场matlab程序下载

    19:44:23 1 http://www.cs.ubc.ca/~murphyk/Software/CRF/crf.html matlab程序包: 该条件随机场程序(CRF)是针对语句进行标注,mat ...

  9. 【matlab】MATLAB程序调试方法和过程

    3.8  MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...

随机推荐

  1. DEVICE_ATTR的使用

    DEVICE_ATTR的使用 使用DEVICE_ATTR,可以在sys fs中添加“文件”,通过修改该文件内容,可以实现在运行过程中动态控制device的目的. 类似的还有DRIVER_ATTR,BU ...

  2. IOS成长之路-调用照相机和相册功能(转)

    转载自:http://blog.csdn.net/like7xiaoben/article/details/8465237 //先设定sourceType为相机,然后判断相机是否可用(ipod)没相机 ...

  3. mybatis显示sql语句 log4j.properties配置文件

    log4j.properties配置如下: 将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试: ### 设置Logger输出级别和输出目的地 # ...

  4. EF4.1之覆盖EF的默认的约定

    覆盖EF默认的约定可以通过两种方式: 1.拦截模型构建器,使用流畅的API 2.通过给 类添加标签 好的,我还用之前定义的订单类来做例子: public class Order { public in ...

  5. linux命令useradd添加用户详解

    1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 2.格式 useradd [-d home] [-s shell] [-c comment] [ ...

  6. FaceNet--Google的人脸识别(转)

    引入 随着深度学习的出现,CV领域突破很多,甚至掀起了一股CV界的创业浪潮,当次风口浪尖之时,Google岂能缺席.特贡献出FaceNet再次刷新LFW上人脸验证的效果记录. 本文是阅读FaceNet ...

  7. MonoBehaviour的事件和具体功能总结

    原地址:http://blog.csdn.net/dingxiaowei2013/article/details/26215577 苦于Visual Studio 2013没有对MonoBehavio ...

  8. POJ 1942 Paths on a Grid(组合数)

    http://poj.org/problem?id=1942 题意 :在一个n*m的矩形上有n*m个网格,从左下角的网格划到右上角的网格,沿着边画,只能向上或向右走,问有多少条不重复的路 . 思路 : ...

  9. hdu 2028 Lowest Common Multiple Plus(最小公倍数)

    Lowest Common Multiple Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  10. Get请求携带数据量的各种限制及解决办法、Post请求说明

    1.   Get请求携带数据量的各种限制及解决办法 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制.这个限制是特定的浏览器及服务器对它的限制. 到新公司处理 ...