luoye919 发表于 2009-5-7 11:13

三次B样条拟合时,出现的问题??

同一组数据,拟合后,截取点数(25:1025)也就是1000个点,怎么在两幅图上得到不同的结果?明显不对,请大虾帮忙看一下。。。。
   谢谢:handshake

ChaChing 发表于 2009-5-7 12:40

给齐完整格式:出错代码和出错提示!

luoye919 发表于 2009-5-7 15:11

回复 沙发 ChaChing 的帖子

代码没有错,只是在两幅图上显示不一样, 我想上传附件图,找不到上传的地方,
我把程序给你看看吧, 你用这个程序函数自己画 的图,对比 和用Plot(bt(25:1025),'.')两个不一样,希望指点一下,现在正急用。。。。

function =Bspline3(x,y)
% Function to draw the cubic B-spline
% x:控制点横坐标矢量
% y:控制点纵坐标矢量
%x=;
%y=;
plot(x,y,'bh');hold on;
plot(x,y);hold on;
n=length(x);
%m=60;
dt=1/(2.5*n); num=1;
for l=1:(n-3)
      a0=(x(l)+4*x(1+l)+x(2+l))/6;
      a1=(x(l+2)-x(l))/2; a2=(x(l)-2*x(1+l)+x(2+l))/2;
      a3=-(x(l)-3*x(1+l)+3*x(2+l)-x(l+3))/6;
      b0=(y(l)+4*y(1+l)+y(2+l))/6;
      b1=(y(l+2)-y(l))/2; b2=(y(l)-2*y(1+l)+y(2+l))/2;
      b3=-(y(l)-3*y(1+l)+3*y(2+l)-y(l+3))/6;
      for i=0:1:2.5*n
            t=i*dt;
            xx(num)=a0+a1*t+a2*t^2+a3*t^3;
            yy(num)=b0+b1*t+b2*t^2+b3*t^3;
            num=num+1;
      end
end
bt=yy; at=xx; plot(xx,yy,'r');

[ 本帖最后由 ChaChing 于 2009-5-7 20:05 编辑 ]

luoye919 发表于 2009-5-7 15:12

Plot(bt(25:1025),'.')是1000个数据点
可在函数自己画的图上显示的不是1000个点。???

ChaChing 发表于 2009-5-7 20:09

回复 板凳 luoye919 的帖子

按左下角编辑, 进去後浏览即可上传附件图!

LZ是说Bspline3画出的图与plot(bt)不同吗? 当然不同!
plot(bt)相当於plot(,bt), 而Bspline3画出的图为plot(at,bt)!
除非at=, 否则当然不同!

ChaChing 发表于 2009-5-7 20:11

回复 地板 luoye919 的帖子

Plot(bt(25:1025),'.')是1001个点 (1025-25+1)!
页: [1]
查看完整版本: 三次B样条拟合时,出现的问题??