声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1494|回复: 5

[综合讨论] 三次B样条拟合时,出现的问题??

[复制链接]
发表于 2009-5-7 11:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

使用道具 举报

发表于 2009-5-7 12:40 | 显示全部楼层
给齐完整格式:出错代码和出错提示!
 楼主| 发表于 2009-5-7 15:11 | 显示全部楼层

回复 沙发 ChaChing 的帖子

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

function [at bt]=Bspline3(x,y)
% Function to draw the cubic B-spline
% x:控制点横坐标矢量
% y:控制点纵坐标矢量
%x=[50 90 150 120 220 300 380 320 450 500];
%y=[100 60 50 150 240 100 100 200 250 130];
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 编辑 ]
 楼主| 发表于 2009-5-7 15:12 | 显示全部楼层
Plot(bt(25:1025),'.')  是1000个数据点
  可在函数自己画的图上显示的不是1000个点。???
发表于 2009-5-7 20:09 | 显示全部楼层

回复 板凳 luoye919 的帖子

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

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

评分

1

查看全部评分

发表于 2009-5-7 20:11 | 显示全部楼层

回复 地板 luoye919 的帖子

Plot(bt(25:1025),'.')  是1001个点 (1025-25+1)!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-5 21:57 , Processed in 0.062770 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表