matlab程序 直线插补,用Matlab实现直线插补计算程序.doc

用Matlab实现直线插补计算程序

姓名: 学号: 班级:

用Matlab实现直线插补计算程序

clear;

F=0;x=0;y=0;

dx=0.5;dy=0.6;

xe=-5;ye=-6;

K=ye/xe;

xx(1)=x;yy(1)=y;

index=2;

while(1)

if(F>=0)

if(xe>0)

x=x+dx;

else

x=x-dx;

end

y=y;

F=abs(xe*y)-abs(ye*x);

else

if(ye>0)

y=y+dy;

else

y=y-dy;

end

x=x;

F=abs(xe*y)-abs(ye*x);

end

if(abs(F)<=0.01)

F=0;

end

xx(index)=x;

yy(index)=y;

index=index+1;

if((abs(x)+abs(y))>=(abs(xe)+abs(ye)))

break;

end

end

if(xe>0)

xxx=0:0.01:xe;

else

xxx=0:-0.001:xe;

end

yyy=K*xxx;

if(xe>0)

plot(xx,yy,'g>',xxx,yyy,'b');

else

plot(xx,yy,'g-

end

grid on;

图表 1

当dx=0.5;dy=0.6;xe=-5;ye=-6;时,结果如图表1所示。

图表 2

当dx=0.6;dy=0.4; xe=6;ye=4;时结果如图标2所示,结果显示多走了一步,原因是matlab在倒数第二步计算if((abs(x)+abs(y))>=(abs(xe)+abs(ye)))时,结果不为0,仍需继续走一步。

可以对程序做进一步修改:加入条件dmin=min(dx,dy)/2; 并把if((abs(x)+abs(y))>=(abs(xe)+abs(ye)))修改成

if(abs(abs(x)+abs(y)-abs(xe)-abs(ye))

图表 3

采用不等步长和简化的偏差计算公式,结果如图表4所示;我们发现对于,简化的偏差计算不适用于不等步长的情况。

图表 4

在土表所采用的程序基础上对偏差计算公式做一个修改,F=F-abs(ye*dx); F=F+abs(xe*dy);计算结果如图表5所示,此方法在该条件下适用。

图表 5

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值